<?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>193529</bug_id>
          
          <creation_ts>2019-01-16 22:56:08 -0800</creation_ts>
          <short_desc>Stop using NetworkStorageSession::storageSession in WebCore</short_desc>
          <delta_ts>2019-01-17 11:33:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1495400</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-16 22:56:08 -0800</bug_when>
    <thetext>Stop using NetworkStorageSession::storageSession in WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495402</commentid>
    <comment_count>1</comment_count>
      <attachid>359352</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-16 23:00:04 -0800</bug_when>
    <thetext>Created attachment 359352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495403</commentid>
    <comment_count>2</comment_count>
      <attachid>359353</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-16 23:13:57 -0800</bug_when>
    <thetext>Created attachment 359353
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495405</commentid>
    <comment_count>3</comment_count>
      <attachid>359355</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-16 23:25:38 -0800</bug_when>
    <thetext>Created attachment 359355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495409</commentid>
    <comment_count>4</comment_count>
      <attachid>359356</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-16 23:41:32 -0800</bug_when>
    <thetext>Created attachment 359356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495414</commentid>
    <comment_count>5</comment_count>
      <attachid>359357</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-16 23:49:09 -0800</bug_when>
    <thetext>Created attachment 359357
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495415</commentid>
    <comment_count>6</comment_count>
      <attachid>359358</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-16 23:58:10 -0800</bug_when>
    <thetext>Created attachment 359358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495416</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-17 00:03:21 -0800</bug_when>
    <thetext>The linux build failure looks unrelated, but EWS indicates this patch causes it.  Could someone get this building on Linux?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495422</commentid>
    <comment_count>8</comment_count>
      <attachid>359360</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-17 00:18:00 -0800</bug_when>
    <thetext>Created attachment 359360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495423</commentid>
    <comment_count>9</comment_count>
      <attachid>359361</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-17 00:28:50 -0800</bug_when>
    <thetext>Created attachment 359361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495490</commentid>
    <comment_count>10</comment_count>
      <attachid>359382</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-17 09:01:16 -0800</bug_when>
    <thetext>Created attachment 359382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495544</commentid>
    <comment_count>11</comment_count>
      <attachid>359382</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-17 11:05:00 -0800</bug_when>
    <thetext>Comment on attachment 359382
Patch

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

&gt; Source/WebCore/platform/network/SocketStreamHandleImpl.cpp:1
&gt; +

This seems bad.

&gt; Source/WebCore/platform/network/soup/SocketStreamHandleImpl.h:1
&gt; +

gg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495548</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-17 11:11:08 -0800</bug_when>
    <thetext>http://trac.webkit.org/r240117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495552</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-17 11:12:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/47357253&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495567</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-17 11:33:14 -0800</bug_when>
    <thetext>http://trac.webkit.org/r240121</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359352</attachid>
            <date>2019-01-16 23:00:04 -0800</date>
            <delta_ts>2019-01-16 23:13:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193529-20190116230003.patch</filename>
            <type>text/plain</type>
            <size>58828</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE93bmVyc2hpcCBvZiB0
aGUgbWFwIHRoYXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBzZWFyY2hl
cyBuZWVkcyB0byBtb3ZlIHRvIHRoZSBXZWJLaXQvV2ViS2l0TGVnYWN5IGxheWVyLAorICAgICAg
ICBzbyB3aGVuIFdlYkNvcmUgdXNlZCB0byBsb29rIGluIHRoaXMgbWFwIGl0IG5lZWRzIHRvIGNh
bGwgYSBjbGllbnQgZnVuY3Rpb24gdG8gYXNrIHRoZSBsYXllciBhYm92ZSBpdCBmb3IgdGhlIHN0
b3JhZ2Ugb2JqZWN0LgorICAgICAgICBJJ3ZlIGNhbGxlZCB0aGlzIGNsaWVudCBTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyOjpzdG9yYWdlU2Vzc2lvbi4gIFJpZ2h0IG5vdyBpdCBqdXN0IGxvb2tzIGlu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24sCisgICAgICAgIGJ1dCB0aGlz
IGFkZGVkIGFic3RyYWN0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1vdmUgdGhlIGN1cnJlbnRs
eSBwcm9jZXNzLWdsb2JhbCBtYXAgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIE5ldHdvcmtQcm9jZXNz
IG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Q29va2llSmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzRW5h
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Nv
Y2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFByb3ZpZGVyOjpjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZURhdGFGb3JIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjp+U3RvcmFnZVNlc3Npb25Qcm92aWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0
cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Z2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSk6CisKIDIwMTktMDEtMTYgIFNp
aHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZERCOiBVbmlx
dWVJREJEYXRhYmFzZSBzaG91bGQgbm90IGJlIGZyZWVkIGlmIHRoZSBkYXRhYmFzZSB0YXNrIHF1
ZXVlIGlzIG5vdCBlbXB0eS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDI0MDA5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAt
MTIzLDcgKzEyNCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwK
ICAgICAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCA9IHBhZ2UgPyBwYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCk7CiAgICAgICAgIFN0cmluZyBwYXJ0aXRpb24gPSBtX2RvY3Vt
ZW50LT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpOwotICAgICAgICBtX2hhbmRsZSA9IG1fc29j
a2V0UHJvdmlkZXItPmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShtX2hhbmRzaGFrZS0+dXJsKCks
ICp0aGlzLCBzZXNzaW9uSUQsIHBhcnRpdGlvbik7CisgICAgICAgIG1faGFuZGxlID0gbV9zb2Nr
ZXRQcm92aWRlci0+Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKG1faGFuZHNoYWtlLT51cmwoKSwg
KnRoaXMsIHNlc3Npb25JRCwgcGFydGl0aW9uLCBmcmFtZS0+bG9hZGVyKCkubmV0d29ya2luZ0Nv
bnRleHQoKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDAwOTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE5MDIsNiArMTkwMiw3IEBACiAJCTVDNDMwNEIxMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRT
aGFkZXJUZXh0dXJlTE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzQzMDRBRTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4dHVyZUxPRC5o
ICovOyB9OwogCQk1QzQzMDRCNjE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJl
TE9ELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQz
MDRCNDE5MUFFRjQ2MDAwRTJCQzAgLyogSlNFWFRTaGFkZXJUZXh0dXJlTE9ELmggKi87IH07CiAJ
CTVDN0M4OEQ4MUQwRjFGNEEwMDlEMkY2RCAvKiBTb2NrZXRQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3Qzg4RDcxRDBGMUYyQjAwOUQy
RjZEIC8qIFNvY2tldFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNUM5RUYyRTMyMUYwMDlFNTAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDOUVGMkUxMjFGMDA5N0MwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNBMURF
QzYxRjcxRjFDNzAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNBMURFQzQxRjcxRTY4NzAwRTcxQkQzIC8q
IEhUVFBIZWFkZXJGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTVDQjM3RkZGMUM2MkQyQTEwMEYyMDE4OCAvKiBTY3JvbGxBbmltYXRvck1v
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjM3
RkZEMUM2MkQyNzgwMEYyMDE4OCAvKiBTY3JvbGxBbmltYXRvck1vY2suaCAqLzsgfTsKIAkJNUNC
QzhEQUQxQUFBMzAyMjAwRTFDODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOERBQjFBQUEz
MDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaCAqLzsgfTsKQEAgLTg5
MDIsNiArODkwMyw3IEBACiAJCTVDOUI4NjBCMUMyMUUzQzYwMDExMEYzNiAvKiBOZXR3b3JrTG9h
ZE1ldHJpY3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3
b3JrTG9hZE1ldHJpY3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUVGMTZG
MURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gWFBhdGhHcmFtbWFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM5RUYxNzAxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYUGF0aEdyYW1tYXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUM5RUYyRTEyMUYwMDk3QzAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZVNl
c3Npb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ExREVDMjFG
NzFFNjg2MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBIZWFkZXJGaWVsZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDQTFERUM0MUY3MUU2ODcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRUUEhlYWRlckZpZWxkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjM3RkZDMUM2MkQyNzgwMEYyMDE4OCAvKiBT
Y3JvbGxBbmltYXRvck1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2Nyb2xsQW5pbWF0b3JNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE5OTI5LDYgKzE5OTMxLDcgQEAKIAkJCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlLmggKi8sCiAJCQkJNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovLAogCQkJCTVDNjY4RTY0MUU3QzZDMzUwMEQzMkIz
QiAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCAqLywKKwkJCQk1QzlFRjJFMTIxRjAwOTdD
MDAzQkRDNTYgLyogU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovLAogCQkJCTQ2ODJEMUZGMUY3
OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oICovLAogCQkJCUUxODA4
MTEwMTZGQ0Y0MkUwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgKi8sCiAJ
CQkJRTE4MDgxMTUxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmgg
Ki8sCkBAIC0zMTUyOSw2ICszMTUzMiw3IEBACiAJCQkJNTFFMEJCMzgwREE1QUNCNjAwQTlFNDE3
IC8qIFN0b3JhZ2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1MEQwRTgzMEZGNDI3MjkwMEFD
MjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTM3NjM2QzFB
MkU2OEJCMDA5QTdFRTIgLyogU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1QzlFRjJFMzIxRjAwOUU1MDAzQkRDNTYgLyogU3RvcmFnZVNlc3Npb25Qcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2NkQzQ0QxRThFRDQ4RjAwQUQ2MkUzIC8qIFN0b3Jh
Z2VUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyog
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJC
RDEyREYwMDBBNjAzMyAvKiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMjQyMyw2ICszMjQyNyw3IEBACiAJCQkJU3BhbmlzaCwKIAkJCQlEdXRjaCwKIAkJCQlJ
dGFsaWFuLAorCQkJCWVuLAogCQkJKTsKIAkJCW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAyOEZD
MDJBQUMwNyAvKiBXZWJDb3JlICovOwogCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4REZGRjM4
QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tp
ZUphci5jcHAJKHJldmlzaW9uIDI0MDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29r
aWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTYgQEAKICNpbmNsdWRlICJO
ZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2lu
Y2x1ZGUgIlNhbWVTaXRlSW5mby5oIgorI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIu
aCIKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK1JlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRlKFJlZjxTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ29va2llSmFyKFdURk1vdmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikpKTsKK30KKwog
SW5jbHVkZVNlY3VyZUNvb2tpZXMgQ29va2llSmFyOjpzaG91bGRJbmNsdWRlU2VjdXJlQ29va2ll
cyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVy
biAodXJsLnByb3RvY29sSXMoImh0dHBzIikgJiYgIWRvY3VtZW50LmZvdW5kTWl4ZWRDb250ZW50
KCkuY29udGFpbnMoU2VjdXJpdHlDb250ZXh0OjpNaXhlZENvbnRlbnRUeXBlOjpBY3RpdmUpKSA/
IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm87CkBA
IC01Miw5ICs1OCw5IEBAIFNhbWVTaXRlSW5mbyBDb29raWVKYXI6OnNhbWVTaXRlSW5mbyhjb24K
ICAgICByZXR1cm4geyB9OwogfQogCi1SZWY8Q29va2llSmFyPiBDb29raWVKYXI6OmNyZWF0ZSgp
CitDb29raWVKYXI6OkNvb2tpZUphcihSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJiBzdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKQorICAgIDogbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyKFdURk1v
dmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q29va2llSmFyKTsKIH0KIAogQ29va2llSmFyOjp+Q29va2llSmFyKCkgPSBkZWZhdWx0OwpAQCAt
NzMsNyArNzksNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVzKERvY3VtZW50JiBkb2N1CiAg
ICAgfQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0OwotICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihkb2N1bWVu
dC5zZXNzaW9uSUQoKSkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJlc3VsdCA9IHNlc3Npb24tPmNv
b2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZv
KGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsK
ICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTEwLDI0ICsxMTYs
MjQgQEAgdm9pZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9jdW1lbnQmIGRvYwogICAgICAgICBw
YWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CiAgICAgfQogCi0gICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFn
ZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgc2Vzc2lvbi0+c2V0
Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CiAgICAg
ZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotYm9vbCBDb29raWVKYXI6
OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKK2Jvb2wgQ29v
a2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0CiB7Ci0gICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKGRv
Y3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuIHNlc3Npb24t
PmNvb2tpZXNFbmFibGVkKCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4g
Q29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0Fj
Y2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBB
TDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7
CiAgICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICAgICAgICAgcmV0dXJuIHsg
cmVzdWx0LmZpcnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMg
OiBTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAgfQpAQCAtMTYwLDE2ICsxNjYsMTYg
QEAgYm9vbCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdQogICAgICAgICBwYWdl
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CiAgICAgfQogCi0gICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKGRv
Y3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuIHNlc3Npb24t
PmdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZXMpOwogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENvb2tpZUph
cjo6ZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgQ29va2llSmFyOjpkZWxldGVDb29raWUo
Y29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
KQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHNl
c3Npb24tPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogICAgIGVsc2UKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCShy
ZXZpc2lvbiAyNDAwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBQQUwgewpAQCAtNDAsMTEgKzQxLDEzIEBA
IGVudW0gY2xhc3MgU2VjdXJlQ29va2llc0FjY2Vzc2VkIDogYm9vbCAKIGNsYXNzIERvY3VtZW50
Owogc3RydWN0IENvb2tpZTsKIHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eTsK
K2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXI7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBDb29raWVK
YXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDb29raWVKYXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPENvb2tpZUphcj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxDb29raWVKYXI+IGNyZWF0
ZShSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJik7CiAgICAgCiAgICAgc3RhdGljIENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5KGNv
bnN0IERvY3VtZW50JiwgY29uc3QgVVJMJik7CiAKQEAgLTYzLDYgKzY2LDEwIEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgU2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbyhjb25zdCBE
b2N1bWVudCYpOwogICAgIHN0YXRpYyBJbmNsdWRlU2VjdXJlQ29va2llcyBzaG91bGRJbmNsdWRl
U2VjdXJlQ29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYpOworICAgIENvb2tpZUph
cihSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJik7CisKK3ByaXZhdGU6CisgICAgUmVmPFN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCShyZXZpc2lvbiAyNDAwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDYgKzUzNSwxMCBAQCBSZWY8U3RvcmFn
ZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAorY2xhc3MgRW1wdHlTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyIDogcHVibGljIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgeworICAgIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRy
OyB9Cit9OworCiBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNs
aWVudHMoKQogewogICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uIHsKQEAg
LTU0Myw3ICs1NDcsNyBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhF
CiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgQ2FjaGVTdG9y
YWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBhZG9wdFJlZigqbmV3IEVtcHR5QmFja0Zv
cndhcmRDbGllbnQpLAotICAgICAgICBDb29raWVKYXI6OmNyZWF0ZSgpCisgICAgICAgIENvb2tp
ZUphcjo6Y3JlYXRlKGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKSkK
ICAgICB9OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5Q2hyb21lQ2xpZW50PiBk
dW1teUNocm9tZUNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyNDAwOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcs
NyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAt
MTY2LDcgKzE2Nyw3IEBAIGVudW0gY2xhc3MgRGlkV3JhcCA6IGJvb2w7CiBlbnVtIGNsYXNzIFJv
dXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCA6IGJvb2w7CiAKLWNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8
UGFnZT4geworY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFBhZ2U+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlKTsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgU2V0dGluZ3NC
YXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5jcHAJKHJldmlzaW9u
IDI0MDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
LVJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJl
YW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRp
dGlvbikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYg
Y2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpCiB7Ci0g
ICAgcmV0dXJuIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSh1cmwsIGNsaWVudCwgc2Vz
c2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCB7IH0pOworICAgIHJldHVybiBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpjcmVhdGUodXJsLCBjbGllbnQsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBh
cnRpdGlvbiwgeyB9LCBwcm92aWRlcik7CiB9CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9Tb2NrZXRQcm92aWRlci5oCShyZXZpc2lvbiAyNDAwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NvY2tldFByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOwogY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKQEAgLTM4LDcgKzM5LDcgQEAgY2xhc3MgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU29ja2V0UHJvdmlk
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29ja2V0UHJvdmlkZXI+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFNvY2tldFByb3ZpZGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNvY2tldFByb3ZpZGVyKTsgfQotICAgIHZpcnR1YWwgUmVmPFNvY2tldFN0cmVh
bUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQ
YXJ0aXRpb24pOworICAgIHZpcnR1YWwgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29j
a2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGNvbnN0IFN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2aXJ0dWFsIH5Tb2NrZXRQcm92aWRlcigpIHsg
fTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2lu
Z0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI0MDA5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTksNyArMTksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNyAr
NDEsNyBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCi1jbGFzcyBOZXR3b3JraW5nQ29udGV4dCA6IHB1
YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtpbmdDb250ZXh0PiB7CitjbGFzcyBOZXR3b3JraW5nQ29u
dGV4dCA6IHB1YmxpYyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5OZXR3b3JraW5nQ29udGV4dCgpID0gZGVmYXVsdDsKIApAQCAtNTgsOCArNTgsNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKLSAgICB2aXJ0dWFsIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7Ci0KICNpZiBQTEFURk9S
TShXSU4pCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBjb25zdCA9IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNw
cAkocmV2aXNpb24gMjQwMDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsOSArNzYsOCBA
QCBzdGF0aWMgc2l6ZV90IHJlbW92ZVRlcm1pbmF0aW9uQ2hhcmFjdGVyCiAgICAgcmV0dXJuIGRh
dGFMZW5ndGggLSAyOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50
OF90PiwgYm9vbD4+IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoY29uc3QgQ29va2llUmVxdWVzdEhl
YWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxkUHJveHkpCitzdGF0aWMgT3B0aW9uYWw8c3RkOjpw
YWlyPFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KQogewotICAgIGF1dG8g
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihoZWFkZXJGaWVsZFByb3h5LnNlc3Npb25JRCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFn
ZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCkBAIC0xMDMsNyAr
MTAyLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbgogICAgIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7CiAKICAgICBpZiAoaGVhZGVyRmllbGRQ
cm94eSkgewotICAgICAgICBhdXRvIGNvb2tpZURhdGFGcm9tTmV0d29ya1Nlc3Npb24gPSBjb29r
aWVEYXRhRm9ySGFuZHNoYWtlKGhlYWRlckZpZWxkUHJveHkudmFsdWUoKSk7CisgICAgICAgIGF1
dG8gY29va2llRGF0YUZyb21OZXR3b3JrU2Vzc2lvbiA9IGNvb2tpZURhdGFGb3JIYW5kc2hha2Uo
bV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyID8gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9y
YWdlU2Vzc2lvbigpIDogbnVsbHB0ciwgKmhlYWRlckZpZWxkUHJveHkpOwogICAgICAgICBpZiAo
IWNvb2tpZURhdGFGcm9tTmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFj
ZSBQQUwgeworY2xhc3MgU2Vzc2lvbklEOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKKworY2xhc3MgU3RvcmFnZVNlc3Npb25Qcm92aWRl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiB7
CitwdWJsaWM6CisgICAgdmlydHVhbCBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB+U3RvcmFnZVNlc3Npb25Qcm92aWRlcigp
IHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgJKHJldmlzaW9uIDI0MDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMiAr
NDEsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgX19DRkhUVFBNZXNzYWdlKiBDRkhUVFBNZQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcmVkZW50aWFsOworY2xhc3MgU3RvcmFnZVNlc3Npb25Q
cm92aWRlcjsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudDsKIAogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6IHB1YmxpYyBTb2NrZXRT
dHJlYW1IYW5kbGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxl
SW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNs
aWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQ
YXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVybCwgY2xpZW50LCBzZXNz
aW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFdURk1vdmUoYXVkaXREYXRhKSkpOyB9CisgICAg
c3RhdGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29uc3QgVVJMJiB1cmws
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25B
dWRpdFRva2VuJiYgYXVkaXREYXRhLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKiBwcm92
aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVybCwg
Y2xpZW50LCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFdURk1vdmUoYXVkaXREYXRh
KSwgcHJvdmlkZXIpKTsgfQogCiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgp
OwogCkBAIC01OCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0
Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICBib29sIHNlbmRQ
ZW5kaW5nRGF0YSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bChjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0
VG9rZW4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25z
dCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4m
JiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogICAgIHZvaWQgY3JlYXRlU3RyZWFt
cygpOwogICAgIHZvaWQgc2NoZWR1bGVTdHJlYW1zKCk7CiAgICAgdm9pZCBjaG9vc2VQcm94eSgp
OwpAQCAtMTAzLDYgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNz
aW9uSUQ7CiAgICAgU3RyaW5nIG1fY3JlZGVudGlhbFBhcnRpdGlvbjsKICAgICBTb3VyY2VBcHBs
aWNhdGlvbkF1ZGl0VG9rZW4gbV9hdWRpdERhdGE7CisgICAgUmVmUHRyPGNvbnN0IFN0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlcjsKIAogICAgIFN0cmVhbUJ1
ZmZlcjx1aW50OF90LCAxMDI0ICogMTAyND4gbV9idWZmZXI7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heEJ1ZmZlclNpemUgPSAxMDAgKiAxMDI0ICogMTAyNDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHJldmlzaW9uIDI0MDA5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlByb3RlY3Rpb25T
cGFjZS5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRlci5o
IgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAgLTk1LDcgKzk2LDcgQEAgc3RhdGljIGlu
bGluZSBhdXRvIGNhbGxiYWNrc1J1bkxvb3BNb2RlKAogI2VuZGlmCiB9CiAKLVNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRv
a2VuJiYgYXVkaXREYXRhKQorU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFu
ZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0
aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEsIGNvbnN0IFN0b3Jh
Z2VTZXNzaW9uUHJvdmlkZXIqIHByb3ZpZGVyKQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVy
bCwgY2xpZW50KQogICAgICwgbV9jb25uZWN0aW5nU3Vic3RhdGUoTmV3KQogICAgICwgbV9jb25u
ZWN0aW9uVHlwZShVbmtub3duKQpAQCAtMTAzLDYgKzEwNCw3IEBAIFNvY2tldFN0cmVhbUhhbmRs
ZUltcGw6OlNvY2tldFN0cmVhbUhhbmQKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAg
ICAsIG1fY3JlZGVudGlhbFBhcnRpdGlvbihjcmVkZW50aWFsUGFydGl0aW9uKQogICAgICwgbV9h
dWRpdERhdGEoV1RGTW92ZShhdWRpdERhdGEpKQorICAgICwgbV9zdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyKHByb3ZpZGVyKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVw
IG5ldyBjbGllbnQgJXAiLCB0aGlzLCAmbV9jbGllbnQpOwogCkBAIC0zNjcsNyArMzY5LDcgQEAg
Ym9vbCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpnZXRTdG9yZWRDTwogCiAgICAgLy8gVHJ5IHN5
c3RlbSBjcmVkZW50aWFsIHN0b3JhZ2UgZmlyc3QsIG1hdGNoaW5nIEhUVFAgYmVoYXZpb3IgKENG
TmV0d29yayBvbmx5IGFza3MgdGhlIGNsaWVudCBmb3IgcGFzc3dvcmQgaWYgaXQgY291bGRuJ3Qg
ZmluZCBpdCBpbiBLZXljaGFpbikuCiAgICAgQ3JlZGVudGlhbCBzdG9yZWRDcmVkZW50aWFsOwot
ICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rv
cmFnZVNlc3Npb24obV9zZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9u
ID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyID8gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5z
dG9yYWdlU2Vzc2lvbigpIDogbnVsbHB0cikgewogICAgICAgICBzdG9yZWRDcmVkZW50aWFsID0g
c3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0RnJvbVBlcnNpc3RlbnRTdG9y
YWdlKHByb3RlY3Rpb25TcGFjZSk7CiAgICAgICAgIGlmIChzdG9yZWRDcmVkZW50aWFsLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHN0b3JlZENyZWRlbnRpYWwgPSBzdG9yYWdlU2Vzc2lvbi0+Y3Jl
ZGVudGlhbFN0b3JhZ2UoKS5nZXQobV9jcmVkZW50aWFsUGFydGl0aW9uLCBwcm90ZWN0aW9uU3Bh
Y2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCShyZXZpc2lvbiAyNDAwOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudDsKIAogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6IHB1YmxpYyBT
b2NrZXRTdHJlYW1IYW5kbGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFt
SGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJjZUFwcGxpY2F0
aW9uQXVkaXRUb2tlbiYmKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRs
ZUltcGwodXJsLCBjbGllbnQpKTsgfQorICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxl
SW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNs
aWVudCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJjZUFwcGxpY2F0aW9uQXVk
aXRUb2tlbiYmLCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlciopIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCkpOyB9CiAK
ICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsKCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24gMjQwMDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CiAKIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgZmluYWwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFu
ZGxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0
YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3Vy
Y2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIqKTsKICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsKCk7CiAKICAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAJKHJldmlzaW9uIDI0MDA5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFt
RXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKQEAgLTgxLDEy
ICs4MiwxMiBAQCBzdGF0aWMgdm9pZCBzb2NrZXRDbGllbnRFdmVudENhbGxiYWNrKEdTCiB9CiAj
ZW5kaWYKIAotUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGll
bnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGlj
YXRpb25BdWRpdFRva2VuJiYpCitSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBT
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIqIG5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKQogewogICAgIFJlZjxTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsPiBzb2NrZXQgPSBhZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhh
bmRsZUltcGwodXJsLCBjbGllbnQpKTsKIAogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2MSwg
OTApCi0gICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyID8gbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkgOiBudWxscHRyOwogICAgIGlmICghbmV0
d29ya1N0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1cm4gc29ja2V0OwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0wMS0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldFN0cmVhbTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldFN0cmVhbTo6TmV0d29ya1Nv
Y2tldFN0cmVhbSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5k
bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVKYXI6OldlYkNvb2tpZUphcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5oOgorCiAyMDE5LTAxLTE2ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXcgU1BJIGZvciBjb250cm9sbGlu
ZyBnZXRVc2VyTWVkaWEKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lv
biAyNDAwOTEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWEKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+c291cmNlQXBwbGljYXRpb25BdWRp
dERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5zZXQoaWRlbnRp
ZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFdURk1vdmUodXJsKSwgc2Vzc2lvbklE
LCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2Vu
KSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtT
b2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHVybCks
IHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbiwgV1RG
TW92ZSh0b2tlbikpKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCBpZGVudGlmaWVyKQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjQwMDkx
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwpAQCAtOTIsNyArOTMsNyBAQCBuYW1lc3BhY2Ug
TmV0d29ya0NhY2hlIHsKIGNsYXNzIENhY2hlOwogfQogCi1jbGFzcyBOZXR3b3JrUHJvY2VzcyA6
IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQsIHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzcz4KK2NsYXNzIE5ldHdvcmtQ
cm9jZXNzIDogcHVibGljIENoaWxkUHJvY2VzcywgcHJpdmF0ZSBEb3dubG9hZE1hbmFnZXI6OkNs
aWVudCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE5ldHdvcmtQcm9jZXNzPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPE5ldHdvcmtQcm9jZXNzPgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogICAgICwgcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFja2luZ1N0b3JlVGVt
cG9yYXJ5RmlsZUhhbmRsZXIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCShyZXZpc2lvbiAyNDAwOTEp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1NvY2tl
dFN0cmVhbS5oIgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIk5ldHdv
cmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVz
c2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1FcnJvci5oPgpAQCAtMzQsMTUgKzM1
LDE1IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1S
ZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFVSTCYm
IHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQ
YXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQorUmVmPE5ldHdvcmtT
b2NrZXRTdHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MsIFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVk
aXREYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTb2NrZXRTdHJlYW0o
V1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGlkZW50aWZpZXIs
IGNvbm5lY3Rpb24sIFdURk1vdmUoYXVkaXREYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE5ldHdvcmtTb2NrZXRTdHJlYW0obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUodXJsKSwgc2Vz
c2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0aW9uLCBXVEZN
b3ZlKGF1ZGl0RGF0YSkpKTsKIH0KIAotTmV0d29ya1NvY2tldFN0cmVhbTo6TmV0d29ya1NvY2tl
dFN0cmVhbShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkK
K05ldHdvcmtTb2NrZXRTdHJlYW06Ok5ldHdvcmtTb2NrZXRTdHJlYW0oTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1
ZGl0RGF0YSkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9jb25uZWN0
aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2ltcGwoU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3Jl
YXRlKHVybCwgKnRoaXMsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgV1RGTW92ZShh
dWRpdERhdGEpKSkKKyAgICAsIG1faW1wbChTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUo
dXJsLCAqdGhpcywgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0
RGF0YSksIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUobmV0d29ya1Byb2Nl
c3MsIHNlc3Npb25JRCkucHRyKCkpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAkocmV2aXNpb24gMjQwMDkx
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDExIEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBOZXR3b3JrUHJvY2VzczsKKwogY2xhc3MgTmV0
d29ya1NvY2tldFN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+
LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpD
b25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAg
IHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwg
VVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24s
IHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1
ZGl0VG9rZW4mJik7CiAgICAgfk5ldHdvcmtTb2NrZXRTdHJlYW0oKTsKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC02Miw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgZmluYWw7CiAKLSAgICBOZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25u
ZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIE5l
dHdvcmtTb2NrZXRTdHJlYW0oTmV0d29ya1Byb2Nlc3MmLCBVUkwmJiwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVj
dGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKIAogICAgIHVp
bnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBJUEM6OkNvbm5lY3Rpb24mIG1fY29ubmVjdGlvbjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIu
aD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IGNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBz
ZXNzaW9uSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIobmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCkpOyB9CisgICAgCitwcml2YXRlOgorICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKKyAgICAgICAgOiBtX25ldHdv
cmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdvcmtQcm9jZXNzKSkKKyAgICAgICAgLCBtX3Nlc3Np
b25JRChzZXNzaW9uSUQpIHsgfQorCisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
KiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9uZXR3
b3JrUHJvY2VzcykKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgV2Vha1B0cjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2Vz
czsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKK307CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjQwMDkxKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzQ0Myw2ICszNDQzLDcgQEAKIAkJNUM4REQzODExRkU0NTVD
QTAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVF1aXJrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYnNpdGVBdXRvcGxheVF1aXJrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDOUU1NjgwMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2ll
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1NjgxMURGN0YwNTUwMEM5
RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1dlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMjZEN0YyMTdBQkJC
NjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMjZEODAyMTdBQkJCNjAwRjk3QTM1IC8qIFdLU2FmZUJy
b3dzaW5nV2FybmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NhZmVC
cm93c2luZ1dhcm5pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBOTg1NDky
MTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dzaW5nV2FybmluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjQzNCw2ICs2NDM1LDcgQEAKIAkJCQk1QzBCMTc3RDFFN0M4ODY3MDBF
OTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgKi8sCiAJCQkJNUMwQjE3N0UxRTdDODg2
NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0uaCAqLywKIAkJCQk1QzBCMTc3RjFFN0M4
ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbiAqLywKKwkJCQk1
QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIu
aCAqLywKIAkJCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovLAog
CQkJCTVDRTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5nTG9hZC5oICovLAogCQkJCTgzQTBF
RDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5jcHAgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlk
ZXIuY3BwCShyZXZpc2lvbiAyNDAwOTEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxT
b2NrZXRTdHJlYW1IYW5kbGU+IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1I
YW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlv
bikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYg
Y2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopCiB7CiAgICAgcmV0dXJu
IFdlYlNvY2tldFN0cmVhbTo6Y3JlYXRlKHVybCwgY2xpZW50LCBzZXNzaW9uSUQsIGNyZWRlbnRp
YWxQYXJ0aXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0UHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCShyZXZpc2lvbiAyNDAwOTEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViU29j
a2V0UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U29ja2V0UHJvdmlkZXIgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0UHJvdmlkZXI+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0UHJvdmlkZXIpOyB9Ci0gICAgUmVmPFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOworICAgIFJlZjxXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBjb25zdCBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyKikgZmluYWw7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0UHJvdmlkZXIoKSB7IH0KIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmNwcAkocmV2aXNpb24gMjQwMDkxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMTgg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2NsYXNzIFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3Rv
cmFnZVNlc3Npb25Qcm92aWRlciB7CisgICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9ucyBhcmUg
YWNjZXNzZWQgb25seSBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCisgICAgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51
bGxwdHI7IH0KK307CisKK1dlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKKyAgICA6IFdlYkNv
cmU6OkNvb2tpZUphcihhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpKSB7
IH0KKwogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlEOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2ll
SmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llSmFyLmgJKHJldmlzaW9uIDI0MDA5MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBA
IHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNj
ZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklE
JiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IGNvb2tpZU5hbWUpIGZpbmFsOworcHJpdmF0ZToKKyAgICBXZWJDb29raWVKYXIoKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI0MDA5MSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNlc3Np
b25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRMZWdhY3kueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ1NQIHZpb2xhdGlvbiByZXBvcnRzIHNob3VsZCBieXBhc3MgQ1NQ
IGNoZWNrcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QYWdlU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCitjbGFzcyBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKTsgfQorCisgICAg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAobV9wYWdlKQorICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24obV9wYWdlLT5zZXNzaW9uSUQoKSk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHZvaWQgc2V0UGFnZShXZWJD
b3JlOjpQYWdlJiBwYWdlKQorICAgIHsKKyAgICAgICAgbV9wYWdlID0gbWFrZVdlYWtQdHIocGFn
ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYWtQdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdl
OworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRM
ZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMDkxKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBACiAJCTU5OEFEOTI4MTIwMUNGMzIwMEFC
QUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTI3MTIwMUNGMzIwMEFCQUU0
RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSAqLzsgfTsKIAkJNTk4QUQ5
MkExMjAxQ0YzQjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
OEFEOTI5MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9j
a0ludGVybmFsLmggKi87IH07CiAJCTU5OEFEQTQ2MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OThBREE0NTEyMDIyNzUwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTVDOUVGMkU2MjFGMDRCQTMwMDNCREM1NiAvKiBQYWdlU3RvcmFnZVNlc3Npb25Q
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM5RUYyRTUyMUYwNEJBMzAwM0JEQzU2IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgg
Ki87IH07CiAJCTVDRTQ0RjRBMjA2RDcwRUEwMDNFRkQwMSAvKiBQaW5nSGFuZGxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U0NEY0OTIwNkQ3MEU5
MDAzRUZEMDEgLyogUGluZ0hhbmRsZS5oICovOyB9OwogCQk1RDdCRjgxNDBDMkExRDkwMDA4Q0Uw
NkQgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUQ3QkY4MTUw
QzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJ
bnNwZWN0b3IubW0gKi87IH07CkBAIC05ODYsNiArOTg3LDcgQEAKIAkJNTk4QUQ5MjcxMjAxQ0Yz
MjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92
aWRlck1vY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5OEFEOTI5MTIwMUNG
M0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uUHJv
dmlkZXJNb2NrSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk4QURB
NDUxMjAyMjc1MDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJFNTIxRjA0QkEzMDAzQkRD
NTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDsgcGF0aCA9IFdlYkNvcmVT
dXBwb3J0L1BhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJNUNFNDRGNDkyMDZENzBFOTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGluZ0hhbmRsZS5oOyBwYXRoID0gV2ViQ29y
ZVN1cHBvcnQvUGluZ0hhbmRsZS5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTVE
N0JGODEyMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1RDdCRjgxMzBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NTQsNiArMjU1Niw3IEBACiAJCQkJQTEwQzFE
NDQxODIwMkZGQjAwMzY4ODNBIC8qIGlvcyAqLywKIAkJCQlCODI5NThEMTEzMjcwN0QwMDAwRDBF
NzkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8sCiAJCQkJQjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5
IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLywKKwkJCQk1QzlFRjJFNTIxRjA0QkEzMDAzQkRDNTYg
LyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk1Q0U0NEY0OTIwNkQ3MEU5
MDAzRUZEMDEgLyogUGluZ0hhbmRsZS5oICovLAogCQkJCTdDMDFDQjgxMTczNDM1QzkwMEM1RDgw
NyAvKiBQb3B1cE1lbnVNYWMuaCAqLywKIAkJCQk3QzAxQ0I4MjE3MzQzNUM5MDBDNUQ4MDcgLyog
UG9wdXBNZW51TWFjLm1tICovLApAQCAtMjkzNCw2ICsyOTM3LDcgQEAKIAkJCQlFMTUzMUJEODIx
ODdCOTU0MDAyRTNGODEgLyogTlNVUkxEb3dubG9hZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNENDM3OUIxRDU3QUJFRjAwQUI4NUVBIC8qIE9iakNFdmVudExpc3RlbmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0Q0Mzc5RDFENTdBQkVGMDBBQjg1RUEgLyogT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTVDOUVGMkU2MjFGMDRCQTMwMDNCREM1NiAvKiBQ
YWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNFNDRGNEEy
MDZENzBFQTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMEMx
RDVGMTgyMDMwMEUwMDM2ODgzQSAvKiBQb3B1cE1lbnVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDMDFDQjg1MTczNDM1QzkwMEM1RDgwNyAvKiBQb3B1cE1lbnVNYWMuaCBpbiBIZWFkZXJzICov
LApAQCAtMzIzMCw2ICszMjM0LDcgQEAKIAkJCQlTcGFuaXNoLAogCQkJCUR1dGNoLAogCQkJCUl0
YWxpYW4sCisJCQkJZW4sCiAJCQkpOwogCQkJbWFpbkdyb3VwID0gMDg2N0Q2OTFGRTg0MDI4RkMw
MkFBQzA3IC8qIFdlYktpdCAqLzsKIAkJCXByb2R1Y3RSZWZHcm91cCA9IDAzNDc2OERGRkYzOEE1
MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLzsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI0MDA5MSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE5LTAxLTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJDYWNoZS5t
bToKKyAgICAgICAgKCtbV2ViQ2FjaGUgYWRkSW1hZ2VUb0NhY2hlOmZvclVSTDpmb3JGcmFtZTpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgt
W1dlYlZpZXcgaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTpmcmFtZTpwcmVmZXJlbmNl
czpncm91cE5hbWU6XSk6CisKIDIwMTktMDEtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQkocmV2aXNpb24gMjQwMDkxKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9NZW1vcnlDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oPgogI2ltcG9y
dCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTUwLDYg
KzUxLDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KICNlbmRpZgog
CitjbGFzcyBEZWZhdWx0U3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiAm
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICB9Cit9OworCiBAaW1wbGVtZW50YXRpb24gV2ViQ2FjaGUKIAogKyAodm9pZClpbml0aWFs
aXplCkBAIC0xNjUsNyArMTczLDggQEAgKyAoYm9vbClhZGRJbWFnZVRvQ2FjaGU6KENHSW1hZ2VS
ZWYpaW1hZwogICAgIGlmICghaW1hZ2UgfHwgIXVybCB8fCAhW1t1cmwgYWJzb2x1dGVTdHJpbmdd
IGxlbmd0aF0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpN
ZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuYWRkSW1hZ2VUb0NhY2hlKFJldGFpblB0cjxDR0ltYWdl
UmVmPihpbWFnZSksIHVybCwgZnJhbWUgPyBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+ZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5U3RyaW5nKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCksIFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKCkucHRyKCkpOworICAg
IGF1dG8gcHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IERlZmF1bHRTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmFkZElt
YWdlVG9DYWNoZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4oaW1hZ2UpLCB1cmwsIGZyYW1lID8gY29y
ZShmcmFtZSktPmRvY3VtZW50KCktPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgOiBlbXB0eVN0
cmluZygpLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXZWJDb3JlOjpDb29r
aWVKYXI6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkucHRyKCkpOwogfQogCiArICh2b2lkKXJl
bW92ZUltYWdlRnJvbUNhY2hlRm9yVVJMOihOU1VSTCAqKXVybApJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjQwMDkxKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NTm9k
ZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJQYWdl
U3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2ltcG9ydCAiU3RvcmFnZVRocmVhZC5oIgogI2lt
cG9ydCAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW1wb3J0ICJXZWJBcHBsaWNhdGlv
bkNhY2hlSW50ZXJuYWwuaCIKQEAgLTE0NDAsMTMgKzE0NDEsMTQgQEAgLSAodm9pZClfY29tbW9u
SW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdH
cm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2Fs
U3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3ByaXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNl
bGYpOwogCisgICAgYXV0byBzdG9yYWdlUHJvdmlkZXIgPSBQYWdlU3RvcmFnZVNlc3Npb25Qcm92
aWRlcjo6Y3JlYXRlKCk7CiAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb24o
CiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50PihzZWxmKSwKICAgICAgICAg
U29ja2V0UHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBMaWJXZWJSVENQcm92aWRlcjo6Y3Jl
YXRlKCksCiAgICAgICAgIFdlYkNvcmU6OkNhY2hlU3RvcmFnZVByb3ZpZGVyOjpjcmVhdGUoKSwK
ICAgICAgICAgQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUoc2VsZiksCi0gICAgICAgIENvb2tpZUph
cjo6Y3JlYXRlKCkKKyAgICAgICAgQ29va2llSmFyOjpjcmVhdGUoc3RvcmFnZVByb3ZpZGVyLmNv
cHlSZWYoKSkKICAgICApOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZik7CkBAIC0x
NDc3LDYgKzE0NzksNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5h
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9ICZfcHJpdmF0ZS0+
Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnZp
c2l0ZWRMaW5rU3RvcmUgPSAmX3ByaXZhdGUtPmdyb3VwLT52aXNpdGVkTGlua1N0b3JlKCk7CiAg
ICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7
CisgICAgc3RvcmFnZVByb3ZpZGVyLT5zZXRQYWdlKCpfcHJpdmF0ZS0+cGFnZSk7CiAKICAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0R3JvdXBOYW1lKGdyb3VwTmFtZSk7CiAKQEAgLTE3MDYsMTMgKzE3
MDksMTQgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAgIF9w
cml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJp
dmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3ByaXZh
dGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwogCisgICAgYXV0byBzdG9yYWdlUHJvdmlkZXIg
PSBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlcjo6Y3JlYXRlKCk7CiAgICAgUGFnZUNvbmZpZ3Vy
YXRpb24gcGFnZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9y
Q2xpZW50PihzZWxmKSwKICAgICAgICAgU29ja2V0UHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAg
ICBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZVByb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUo
c2VsZiksCi0gICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKCkKKyAgICAgICAgQ29va2llSmFyOjpj
cmVhdGUoc3RvcmFnZVByb3ZpZGVyLmNvcHlSZWYoKSkKICAgICApOwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE3MzQsNiArMTczOCw3IEBAIC0gKGlkKWluaXRTaW1w
bGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE4KICAgICBwYWdlQ29uZmlndXJhdGlvbi5wbHVnaW5J
bmZvUHJvdmlkZXIgPSAmV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24oKTsKIAogICAg
IF9wcml2YXRlLT5wYWdlID0gbmV3IFBhZ2UoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwor
ICAgIHN0b3JhZ2VQcm92aWRlci0+c2V0UGFnZSgqX3ByaXZhdGUtPnBhZ2UpOwogICAgIAogICAg
IFtzZWxmIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDpZRVNdOwogICAgIApJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjQwMDkxKQorKysgU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24g
aW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkzNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmluaXRXaXRoRnJhbWUpOgorCiAy
MDE5LTAxLTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVkdWNlIHVzZSBvZiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbiBpbiBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cAkocmV2aXNpb24gMjQwMDkxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJET01Db3JlQ2xh
c3Nlcy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKKyNpbmNsdWRlICJQYWdlU3RvcmFnZVNlc3Npb25Qcm92
aWRlci5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmll
dy5oIgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGUuaCIKQEAgLTMxMDYsMTMgKzMxMDcs
MTQgQEAgSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1QgZnJhbQogCiAgICAgbV9p
bnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpOwogCisgICAgYXV0
byBzdG9yYWdlUHJvdmlkZXIgPSBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlcjo6Y3JlYXRlKCk7
CiAgICAgUGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbigKICAgICAgICAgbWFrZVVuaXF1
ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHRoaXMpLAogICAgICAgICBTb2NrZXRQcm92aWRlcjo6Y3Jl
YXRlKCksCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+KCksCiAgICAg
ICAgIFdlYkNvcmU6OkNhY2hlU3RvcmFnZVByb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgQmFj
a0ZvcndhcmRMaXN0OjpjcmVhdGUoKSwKLSAgICAgICAgQ29va2llSmFyOjpjcmVhdGUoKQorICAg
ICAgICBDb29raWVKYXI6OmNyZWF0ZShzdG9yYWdlUHJvdmlkZXIuY29weVJlZigpKQogICAgICk7
CiAgICAgY29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRo
aXMpOwogICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4
dE1lbnVDbGllbnQodGhpcyk7CkBAIC0zMTI4LDYgKzMxMzAsNyBAQCBIUkVTVUxUIFdlYlZpZXc6
OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtCiAgICAgY29uZmlndXJhdGlvbi5wbHVnaW5JbmZvUHJv
dmlkZXIgPSAmV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24oKTsKIAogICAgIG1fcGFn
ZSA9IG5ldyBQYWdlKFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgIHN0b3JhZ2VQcm92aWRl
ci0+c2V0UGFnZSgqcGFnZSk7CiAgICAgcHJvdmlkZUdlb2xvY2F0aW9uVG8obV9wYWdlLCAqbmV3
IFdlYkdlb2xvY2F0aW9uQ2xpZW50KHRoaXMpKTsKIAogICAgIG1fcGFnZS0+YWRkTGF5b3V0TWls
ZXN0b25lcyh7IERpZEZpcnN0TGF5b3V0LCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQg
fSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359353</attachid>
            <date>2019-01-16 23:13:57 -0800</date>
            <delta_ts>2019-01-16 23:25:37 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>57129</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE93bmVyc2hpcCBvZiB0
aGUgbWFwIHRoYXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBzZWFyY2hl
cyBuZWVkcyB0byBtb3ZlIHRvIHRoZSBXZWJLaXQvV2ViS2l0TGVnYWN5IGxheWVyLAorICAgICAg
ICBzbyB3aGVuIFdlYkNvcmUgdXNlZCB0byBsb29rIGluIHRoaXMgbWFwIGl0IG5lZWRzIHRvIGNh
bGwgYSBjbGllbnQgZnVuY3Rpb24gdG8gYXNrIHRoZSBsYXllciBhYm92ZSBpdCBmb3IgdGhlIHN0
b3JhZ2Ugb2JqZWN0LgorICAgICAgICBJJ3ZlIGNhbGxlZCB0aGlzIGNsaWVudCBTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyOjpzdG9yYWdlU2Vzc2lvbi4gIFJpZ2h0IG5vdyBpdCBqdXN0IGxvb2tzIGlu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24sCisgICAgICAgIGJ1dCB0aGlz
IGFkZGVkIGFic3RyYWN0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1vdmUgdGhlIGN1cnJlbnRs
eSBwcm9jZXNzLWdsb2JhbCBtYXAgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIE5ldHdvcmtQcm9jZXNz
IG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Q29va2llSmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzRW5h
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Nv
Y2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFByb3ZpZGVyOjpjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZURhdGFGb3JIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjp+U3RvcmFnZVNlc3Npb25Qcm92aWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0
cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Z2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSk6CisKIDIwMTktMDEtMTYgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVcGRh
dGUgdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIHRvIGFjdHVhbGx5IHVzZSB2ZXJ0
ZXggYnVmZmVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEyMyw3ICsx
MjQsNyBAQAogICAgICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gcGFnZSA/IHBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKICAgICAgICAgU3RyaW5nIHBhcnRpdGlvbiA9
IG1fZG9jdW1lbnQtPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCk7Ci0gICAgICAgIG1faGFuZGxl
ID0gbV9zb2NrZXRQcm92aWRlci0+Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKG1faGFuZHNoYWtl
LT51cmwoKSwgKnRoaXMsIHNlc3Npb25JRCwgcGFydGl0aW9uKTsKKyAgICAgICAgbV9oYW5kbGUg
PSBtX3NvY2tldFByb3ZpZGVyLT5jcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUobV9oYW5kc2hha2Ut
PnVybCgpLCAqdGhpcywgc2Vzc2lvbklELCBwYXJ0aXRpb24sIGZyYW1lLT5sb2FkZXIoKS5uZXR3
b3JraW5nQ29udGV4dCgpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0MDEwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTkwMiw2ICsxOTAyLDcgQEAKIAkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMw
IC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNDMwNEFFMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0
dXJlTE9ELmggKi87IH07CiAJCTVDNDMwNEI2MTkxQUVGNDYwMDBFMkJDMCAvKiBKU0VYVFNoYWRl
clRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDNDMwNEI0MTkxQUVGNDYwMDBFMkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVMT0QuaCAq
LzsgfTsKIAkJNUM3Qzg4RDgxRDBGMUY0QTAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzdDODhENzFEMEYx
RjJCMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1QzlFRjJGMzIxRjA2MTkwMDAzQkRDNTYgLyogU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUM5RUYyRjIyMUYwNjE3MTAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1Q0ExREVDNjFGNzFGMUM3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ExREVDNDFGNzFFNjg3MDBF
NzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNCMzdGRkYxQzYyRDJBMTAwRjIwMTg4IC8qIFNjcm9sbEFu
aW1hdG9yTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNCMzdGRkQxQzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oICovOyB9
OwogCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExp
bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQkM4
REFCMUFBQTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oICovOyB9
OwpAQCAtODkwOCw2ICs4OTA4LDcgQEAKIAkJNUM5Qjg2MEIxQzIxRTNDNjAwMTEwRjM2IC8qIE5l
dHdvcmtMb2FkTWV0cmljcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE5ldHdvcmtMb2FkTWV0cmljcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUM5RUYxNkYxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEdyYW1tYXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1QzlFRjE3MDFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQYXRoR3JhbW1hci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJGMjIxRjA2MTcxMDAzQkRDNTYgLyogU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
QTFERUMyMUY3MUU2ODYwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUEhlYWRlckZpZWxkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMURFQzQxRjcxRTY4NzAwRTcxQkQzIC8qIEhUVFBIZWFk
ZXJGaWVsZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVFRQSGVhZGVyRmll
bGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkMxQzYyRDI3ODAwRjIw
MTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JvbGxBbmltYXRvck1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTk5MzUsNiArMTk5MzcsNyBAQAogCQkJCTUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1
NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLywKIAkJCQk1MTBENEEzMjEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJNUM2NjhFNjQxRTdDNkMz
NTAwRDMyQjNCIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwICovLAorCQkJCTVDOUVGMkYy
MjFGMDYxNzEwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi8sCiAJCQkJNDY4
MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi8sCiAJ
CQkJRTE4MDgxMTAxNkZDRjQyRTAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNw
cCAqLywKIAkJCQlFMTgwODExNTE2RkNGOUNCMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJD
bGllbnQuaCAqLywKQEAgLTI5MDE0LDYgKzI5MDE2LDcgQEAKIAkJCQlFNDAxQzI3NTE3Q0U1M0VD
MDBDNDFBMzUgLyogRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNjNGNUQ0RjcwRThDNEI3MTAwQzBCRDA0IC8qIEVsZW1lbnRSYXJlRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkJEQjYxOUYxNkQ2MDM2NTAwQkIzMzk0IC8qIEVsZW1lbnRSdWxlQ29sbGVj
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzlFRjJGMzIxRjA2MTkwMDAzQkRDNTYgLyogU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRENThFQkIxN0I4RjEy
ODAwQ0JEQ0E4IC8qIEVsZW1lbnRUcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZG
NkJFMEExNTYxMTgwMDBBNDIzNCAvKiBFbGxpcHNpc0JveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RjU1QjNEQkMxMjUxRjEyRDAwM0VGMjY5IC8qIEVtYWlsSW5wdXRUeXBlLmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCShyZXZpc2lvbiAyNDAxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsMTAgKzM2LDE2IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTYW1lU2l0ZUluZm8uaCIKKyNp
bmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRy
YWNpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitSZWY8Q29va2llSmFyPiBDb29raWVK
YXI6OmNyZWF0ZShSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJiBzdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvb2tpZUphcihXVEZNb3ZlKHN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIpKSk7Cit9CisKIEluY2x1ZGVTZWN1cmVDb29raWVzIENvb2tp
ZUphcjo6c2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gKHVybC5wcm90b2NvbElzKCJodHRwcyIp
ICYmICFkb2N1bWVudC5mb3VuZE1peGVkQ29udGVudCgpLmNvbnRhaW5zKFNlY3VyaXR5Q29udGV4
dDo6TWl4ZWRDb250ZW50VHlwZTo6QWN0aXZlKSkgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVz
IDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vOwpAQCAtNTIsOSArNTgsOSBAQAogICAgIHJldHVy
biB7IH07CiB9CiAKLVJlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRlKCkKK0Nvb2tpZUph
cjo6Q29va2llSmFyKFJlZjxTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIpCisgICAgOiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIoV1RGTW92ZShzdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVKYXIp
OwogfQogCiBDb29raWVKYXI6On5Db29raWVKYXIoKSA9IGRlZmF1bHQ7CkBAIC03Myw3ICs3OSw3
IEBACiAgICAgfQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0OwotICAgIGlm
IChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihk
b2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJlc3VsdCA9IHNlc3Np
b24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNp
dGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTEwLDE1
ICsxMTYsMTUgQEAKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBh
Z2VJRCgpOwogICAgIH0KIAotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkp
CiAgICAgICAgIHNlc3Npb24tPnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBjb29raWVTdHJpbmcpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLWJvb2wgQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQpIGNvbnN0Citib29sIENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1l
bnQmKSBjb25zdAogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAgaWYgKGF1dG8q
IHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCiAg
ICAgICAgIHJldHVybiBzZXNzaW9uLT5jb29raWVzRW5hYmxlZCgpOwogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0xMjUsOSArMTMxLDkgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVK
YXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
Y29uc3QKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9z
dG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmZpcnN0LCBy
ZXN1bHQuc2Vjb25kID8gU2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1cmVDb29raWVz
QWNjZXNzZWQ6Ok5vIH07CiAgICAgfQpAQCAtMTYwLDcgKzE2Niw3IEBACiAgICAgICAgIHBhZ2VJ
RCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKICAgICB9CiAKLSAgICBpZiAo
YXV0byogc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZG9j
dW1lbnQuc2Vzc2lvbklEKCkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+
Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUlu
Zm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llcyk7CiAKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE2Nyw5ICsxNzMsOSBAQAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBDb29raWVKYXI6OmRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIENvb2tp
ZUphcjo6ZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQorICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vz
c2lvbigpKQogICAgICAgICBzZXNzaW9uLT5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsK
ICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db29raWVKYXIuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgUEFMIHsK
QEAgLTQwLDExICs0MSwxMyBAQAogY2xhc3MgRG9jdW1lbnQ7CiBzdHJ1Y3QgQ29va2llOwogc3Ry
dWN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5OworY2xhc3MgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOworY2xhc3MgU3RvcmFnZVNlc3Npb25Qcm92aWRlcjsKIHN0cnVjdCBTYW1lU2l0ZUlu
Zm87CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIENvb2tpZUphciA6IHB1YmxpYyBSZWZDb3VudGVk
PENvb2tpZUphcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29va2llSmFyPiBjcmVhdGUo
KTsKKyAgICBzdGF0aWMgUmVmPENvb2tpZUphcj4gY3JlYXRlKFJlZjxTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyPiYmKTsKICAgICAKICAgICBzdGF0aWMgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJv
eHkgY29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBV
UkwmKTsKIApAQCAtNjMsNiArNjYsMTAgQEAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgU2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbyhjb25zdCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyBJbmNsdWRl
U2VjdXJlQ29va2llcyBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhjb25zdCBEb2N1bWVudCYs
IGNvbnN0IFVSTCYpOworICAgIENvb2tpZUphcihSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4m
Jik7CisKK3ByaXZhdGU6CisgICAgUmVmPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFn
ZVNlc3Npb25Qcm92aWRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTM1LDYgKzUzNSwxMCBAQAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3RvcmFnZU5h
bWVzcGFjZSk7CiB9CiAKK2NsYXNzIEVtcHR5U3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1Ymxp
YyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorfTsKKwogUGFn
ZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCkKIHsKICAg
ICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbiB7CkBAIC01NDMsNyArNTQ3LDcg
QEAKICAgICAgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBDYWNoZVN0
b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIGFkb3B0UmVmKCpuZXcgRW1wdHlCYWNr
Rm9yd2FyZENsaWVudCksCi0gICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKCkKKyAgICAgICAgQ29v
a2llSmFyOjpjcmVhdGUoYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIp
KQogICAgIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlDaHJvbWVDbGllbnQ+
IGR1bW15Q2hyb21lQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI0MDEwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
Nyw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBA
IC0xNjYsNyArMTY3LDcgQEAKIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhf
dDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogYm9vbDsKIAotY2xh
c3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPiB7CitjbGFzcyBQYWdlIDogcHVi
bGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFnZT4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nc0Jhc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NvY2tldFByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NvY2tldFByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9Tb2NrZXRQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4g
U29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwg
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uKQorUmVmPFNvY2tldFN0cmVhbUhh
bmRsZT4gU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwm
IHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBjb25zdCBTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKiBwcm92aWRlcikKIHsKLSAgICByZXR1cm4gU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbDo6Y3JlYXRlKHVybCwgY2xpZW50LCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRp
b24sIHsgfSk7CisgICAgcmV0dXJuIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSh1cmws
IGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCB7IH0sIHByb3ZpZGVyKTsK
IH0KICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgJKHJldmlz
aW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOwogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50OwpAQCAtMzgsNyArMzksNyBAQAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU29ja2V0UHJvdmlk
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29ja2V0UHJvdmlkZXI+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFNvY2tldFByb3ZpZGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNvY2tldFByb3ZpZGVyKTsgfQotICAgIHZpcnR1YWwgUmVmPFNvY2tldFN0cmVh
bUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQ
YXJ0aXRpb24pOworICAgIHZpcnR1YWwgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29j
a2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGNvbnN0IFN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2aXJ0dWFsIH5Tb2NrZXRQcm92aWRlcigpIHsg
fTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2lu
Z0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTksNyArMTksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsNyAr
NDEsNyBAQAogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAot
Y2xhc3MgTmV0d29ya2luZ0NvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JraW5nQ29u
dGV4dD4geworY2xhc3MgTmV0d29ya2luZ0NvbnRleHQgOiBwdWJsaWMgU3RvcmFnZVNlc3Npb25Q
cm92aWRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TmV0d29ya2luZ0NvbnRleHQoKSA9IGRl
ZmF1bHQ7CiAKQEAgLTU4LDggKzU4LDYgQEAKIAogICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZUFw
cGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAot
ICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
ID0gMDsKLQogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxv
Y2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0ID0gMDsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGwuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw5ICs3Niw4IEBACiAgICAgcmV0dXJuIGRhdGFMZW5ndGggLSAyOwogfQogCi1z
dGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tpZURh
dGFGb3JIYW5kc2hha2UoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRl
ckZpZWxkUHJveHkpCitzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90Piwg
Ym9vbD4+IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
KiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5JiBoZWFkZXJGaWVsZFByb3h5KQogewotICAgIGF1dG8gbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihoZWFkZXJGaWVsZFByb3h5
LnNlc3Npb25JRCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCkBAIC0xMDMsNyArMTAyLDcgQEAKICAgICBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwogCiAgICAgaWYgKGhlYWRlckZpZWxkUHJveHkp
IHsKLSAgICAgICAgYXV0byBjb29raWVEYXRhRnJvbU5ldHdvcmtTZXNzaW9uID0gY29va2llRGF0
YUZvckhhbmRzaGFrZShoZWFkZXJGaWVsZFByb3h5LnZhbHVlKCkpOworICAgICAgICBhdXRvIGNv
b2tpZURhdGFGcm9tTmV0d29ya1Nlc3Npb24gPSBjb29raWVEYXRhRm9ySGFuZHNoYWtlKG1fc3Rv
cmFnZVNlc3Npb25Qcm92aWRlciA/IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNl
c3Npb24oKSA6IG51bGxwdHIsICpoZWFkZXJGaWVsZFByb3h5KTsKICAgICAgICAgaWYgKCFjb29r
aWVEYXRhRnJvbU5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgUEFM
IHsKK2NsYXNzIFNlc3Npb25JRDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBO
ZXR3b3JrU3RvcmFnZVNlc3Npb247CisKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4geworcHVi
bGljOgorICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgflN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIoKSB7IH0K
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
CShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTIgKzQxLDEz
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsIDogcHVi
bGljIFNvY2tldFN0cmVhbUhhbmRsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
Y3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXRE
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBj
bGllbnQsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgV1RGTW92ZShhdWRpdERhdGEp
KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0ZShjb25z
dCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBTb3VyY2VB
cHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEsIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIqIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRs
ZUltcGwodXJsLCBjbGllbnQsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgV1RGTW92
ZShhdWRpdERhdGEpLCBwcm92aWRlcikpOyB9CiAKICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsKCk7CiAKQEAgLTU4LDcgKzU5LDcgQEAKICAgICBPcHRpb25hbDxzaXplX3Q+IHBs
YXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2Vu
ZFBlbmRpbmdEYXRhKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVk
aXRUb2tlbiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNv
bnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tl
biYmLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKik7CiAgICAgdm9pZCBjcmVhdGVTdHJl
YW1zKCk7CiAgICAgdm9pZCBzY2hlZHVsZVN0cmVhbXMoKTsKICAgICB2b2lkIGNob29zZVByb3h5
KCk7CkBAIC0xMDMsNiArMTA0LDcgQEAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
ICAgICBTdHJpbmcgbV9jcmVkZW50aWFsUGFydGl0aW9uOwogICAgIFNvdXJjZUFwcGxpY2F0aW9u
QXVkaXRUb2tlbiBtX2F1ZGl0RGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgU3RvcmFnZVNlc3Npb25Q
cm92aWRlcj4gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyOwogCiAgICAgU3RyZWFtQnVmZmVyPHVp
bnQ4X3QsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWF4QnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbENGTmV0LmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgi
CiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaCIKKyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4K
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtOTUsNyArOTYsNyBAQAogI2VuZGlmCiB9CiAKLVNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiB1
cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRp
b25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQorU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0
U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50
aWFsUGFydGl0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEsIGNv
bnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqIHByb3ZpZGVyKQogICAgIDogU29ja2V0U3RyZWFt
SGFuZGxlKHVybCwgY2xpZW50KQogICAgICwgbV9jb25uZWN0aW5nU3Vic3RhdGUoTmV3KQogICAg
ICwgbV9jb25uZWN0aW9uVHlwZShVbmtub3duKQpAQCAtMTAzLDYgKzEwNCw3IEBACiAgICAgLCBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2NyZWRlbnRpYWxQYXJ0aXRpb24oY3JlZGVu
dGlhbFBhcnRpdGlvbikKICAgICAsIG1fYXVkaXREYXRhKFdURk1vdmUoYXVkaXREYXRhKSkKKyAg
ICAsIG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlcihwcm92aWRlcikKIHsKICAgICBMT0coTmV0d29y
aywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgJm1fY2xpZW50
KTsKIApAQCAtMzY3LDcgKzM2OSw3IEBACiAKICAgICAvLyBUcnkgc3lzdGVtIGNyZWRlbnRpYWwg
c3RvcmFnZSBmaXJzdCwgbWF0Y2hpbmcgSFRUUCBiZWhhdmlvciAoQ0ZOZXR3b3JrIG9ubHkgYXNr
cyB0aGUgY2xpZW50IGZvciBwYXNzd29yZCBpZiBpdCBjb3VsZG4ndCBmaW5kIGl0IGluIEtleWNo
YWluKS4KICAgICBDcmVkZW50aWFsIHN0b3JlZENyZWRlbnRpYWw7Ci0gICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihtX3Nl
c3Npb25JRCkpIHsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3N0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIgPyBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkg
OiBudWxscHRyKSB7CiAgICAgICAgIHN0b3JlZENyZWRlbnRpYWwgPSBzdG9yYWdlU2Vzc2lvbi0+
Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlvblNw
YWNlKTsKICAgICAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWwuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgc3RvcmVkQ3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgp
LmdldChtX2NyZWRlbnRpYWxQYXJ0aXRpb24sIHByb3RlY3Rpb25TcGFjZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6
IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U29j
a2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFN0
cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQpKTsgfQorICAgIHN0YXRpYyBSZWY8U29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXRUb2tlbiYmLCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlciop
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVu
dCkpOyB9CiAKICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsKCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQAogCiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsIGZpbmFsIDogcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29uc3QgVVJMJiwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhh
bmRsZUltcGw+IGNyZWF0ZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2Vu
JiYsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKik7CiAgICAgdmlydHVhbCB+
U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3VybDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAu
Y3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VFcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCiAjaW5jbHVkZSAiU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCkBAIC04MSwxMiArODIsMTIgQEAKIH0KICNlbmRpZgog
Ci1SZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1
ZGl0VG9rZW4mJikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYg
Y2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJjZUFw
cGxpY2F0aW9uQXVkaXRUb2tlbiYmLCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRl
ciogbmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCiB7CiAgICAgUmVmPFNvY2tldFN0cmVh
bUhhbmRsZUltcGw+IHNvY2tldCA9IGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bCh1cmwsIGNsaWVudCkpOwogCiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDYxLCA5MCkKLSAg
ICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgPyBuZXR3b3JrU3RvcmFnZVNlc3Npb25Q
cm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSA6IG51bGxwdHI7CiAgICAgaWYgKCFuZXR3b3JrU3Rv
cmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBzb2NrZXQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI2IEBACisyMDE5LTAxLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y3JlYXRlU29ja2V0U3RyZWFtKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpOZXR3b3JrU29ja2V0U3Ry
ZWFtKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDog
QWRkZWQuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llSmFyLmg6CisKIDIwMTktMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBTUEkgZm9yIGNvbnRyb2xsaW5nIGdldFVz
ZXJNZWRpYQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI0MDEw
NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNyArMjgxLDcgQEAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+c291cmNlQXBwbGlj
YXRpb25BdWRpdERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29ja2V0U3RyZWFtcy5z
ZXQoaWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFdURk1vdmUodXJsKSwg
c2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZN
b3ZlKHRva2VuKSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0cmVhbXMuc2V0KGlkZW50aWZpZXIs
IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZN
b3ZlKHVybCksIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIsIG1fY29ubmVj
dGlvbiwgV1RGTW92ZSh0b2tlbikpKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCBpZGVudGlmaWVyKQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNp
b24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBACiBjbGFzcyBDYWNoZTsKIH0KIAot
Y2xhc3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzLCBwcml2YXRlIERvd25s
b2FkTWFuYWdlcjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TmV0d29ya1By
b2Nlc3M+CitjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZh
dGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxO
ZXR3b3JrUHJvY2Vzcz4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrUHJvY2Vzcz4KICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpJREJTZXJ2
ZXI6OklEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFt
LmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW0uaCIKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1
ZGUgIldlYlNvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFt
RXJyb3IuaD4KQEAgLTM0LDE1ICszNSwxNSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtTb2Nr
ZXRTdHJlYW06OmNyZWF0ZShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1
ZGl0RGF0YSkKK1JlZjxOZXR3b3JrU29ja2V0U3RyZWFtPiBOZXR3b3JrU29ja2V0U3RyZWFtOjpj
cmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBVUkwmJiB1cmwsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBOZXR3b3JrU29ja2V0U3RyZWFtKFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjcmVkZW50aWFs
UGFydGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU29ja2V0U3RyZWFtKG5ldHdvcmtQcm9j
ZXNzLCBXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgaWRlbnRp
ZmllciwgY29ubmVjdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpKSk7CiB9CiAKLU5ldHdvcmtTb2Nr
ZXRTdHJlYW06Ok5ldHdvcmtTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QgaWRl
bnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1
ZGl0VG9rZW4mJiBhdWRpdERhdGEpCitOZXR3b3JrU29ja2V0U3RyZWFtOjpOZXR3b3JrU29ja2V0
U3RyZWFtKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgVVJMJiYgdXJsLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWlu
dDY0X3QgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTb3VyY2VBcHBs
aWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKICAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQotICAgICwgbV9pbXBsKFNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSh1cmwsICp0aGlzLCBzZXNzaW9uSUQsIGNyZWRlbnRp
YWxQYXJ0aXRpb24sIFdURk1vdmUoYXVkaXREYXRhKSkpCisgICAgLCBtX2ltcGwoU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKHVybCwgKnRoaXMsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBh
cnRpdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpLCBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRl
cjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQpLnB0cigpKSkKIHsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSwxMSBAQAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgTmV0d29ya1Byb2Nlc3M7CisKIGNsYXNzIE5l
dHdvcmtTb2NrZXRTdHJlYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrU29ja2V0U3RyZWFt
PiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IGNyZWF0ZShVUkwmJiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6
Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAg
ICBzdGF0aWMgUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYs
IFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9u
LCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25B
dWRpdFRva2VuJiYpOwogICAgIH5OZXR3b3JrU29ja2V0U3RyZWFtKCk7CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjIs
NyArNjQsNyBAQAogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFs
OwogCi0gICAgTmV0d29ya1NvY2tldFN0cmVhbShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYs
IFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBOZXR3b3JrU29j
a2V0U3RyZWFtKE5ldHdvcmtQcm9jZXNzJiwgVVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24mLCBX
ZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CiAKICAgICB1aW50NjRfdCBt
X2lkZW50aWZpZXI7CiAgICAgSVBDOjpDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg+CisjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlciBmaW5h
bCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiBjcmVhdGUoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklE
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKG5l
dHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQpKTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25Qcm92aWRlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNv
bnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCisgICAgICAgIDogbV9uZXR3b3JrUHJvY2Vz
cyhtYWtlV2Vha1B0cihuZXR3b3JrUHJvY2VzcykpCisgICAgICAgICwgbV9zZXNzaW9uSUQoc2Vz
c2lvbklEKSB7IH0KKworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFn
ZVNlc3Npb24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nl
c3MpCisgICAgICAgICAgICByZXR1cm4gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIFdlYWtQdHI8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAg
UEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0MDEwNCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTM0NDUsNiArMzQ0NSw3IEBACiAJCTVDOEREMzgxMUZFNDU1Q0EwMEYyQTU1
NiAvKiBXZWJzaXRlQXV0b3BsYXlRdWlyay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJzaXRlQXV0b3BsYXlRdWlyay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzlFNTY4MDFERjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tXZWJzaXRlUG9saWNpZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTY4MTFERjdGMDU1MDBDOUVFMzMgLyog
V0tXZWJzaXRlUG9saWNpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tX
ZWJzaXRlUG9saWNpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM5RUYyRTcy
MUYwNThGOTAwM0JEQzU2IC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTI2RDdGMjE3QUJCQjYwMEY5N0Ez
NSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1NhZmVCcm93c2luZ1dhcm5pbmcubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDQTI2RDgwMjE3QUJCQjYwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dh
cm5pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTYWZlQnJvd3NpbmdX
YXJuaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTk4NTQ5MjEwQkVCNUEw
MDU3RUI2QiAvKiBTYWZlQnJvd3NpbmdXYXJuaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNhZmVCcm93c2luZ1dhcm5pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY0MzksNiArNjQ0MCw3IEBACiAJCQkJNUMwQjE3N0QxRTdDODg2NzAwRTkxMjNDIC8q
IE5ldHdvcmtTb2NrZXRTdHJlYW0uY3BwICovLAogCQkJCTVDMEIxNzdFMUU3Qzg4NjcwMEU5MTIz
QyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtLmggKi8sCiAJCQkJNUMwQjE3N0YxRTdDODg2NzAwRTkx
MjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4gKi8sCisJCQkJNUM5RUYyRTcy
MUYwNThGOTAwM0JEQzU2IC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi8sCiAJ
CQkJNDYyMTA3RDcxRjM4REJEMzAwREQ3ODEwIC8qIFBpbmdMb2FkLmNwcCAqLywKIAkJCQk1Q0U4
NUIxRjFDODhFNjQzMDA3MEJGQ0UgLyogUGluZ0xvYWQuaCAqLywKIAkJCQk4M0EwRUQzMzFGNzQ3
Q0M3MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2suY3BwICovLApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcAko
cmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8U29ja2V0U3Ry
ZWFtSGFuZGxlPiBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNv
bnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pCitSZWY8
U29ja2V0U3RyZWFtSGFuZGxlPiBXZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlU29ja2V0U3RyZWFt
SGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRp
b24sIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKQogewogICAgIHJldHVybiBXZWJTb2Nr
ZXRTdHJlYW06OmNyZWF0ZSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0
aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dFByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0UHJvdmlkZXIuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNyArMzIsNyBAQAogY2xhc3MgV2ViU29ja2V0UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U29ja2V0UHJvdmlkZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU29j
a2V0UHJvdmlkZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0UHJv
dmlkZXIpOyB9Ci0gICAgUmVmPFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29j
a2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24p
IGZpbmFsOworICAgIFJlZjxXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZVNvY2tl
dFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBj
b25zdCBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKikgZmluYWw7CiAgICAgdmlydHVh
bCB+V2ViU29ja2V0UHJvdmlkZXIoKSB7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAkocmV2aXNpb24gMjQwMTA0
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMTggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlN0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CisgICAg
Ly8gTmV0d29ya1N0b3JhZ2VTZXNzaW9ucyBhcmUgYWNjZXNzZWQgb25seSBpbiB0aGUgTmV0d29y
a1Byb2Nlc3MuCisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vz
c2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK307CisKK1dlYkNvb2tpZUph
cjo6V2ViQ29va2llSmFyKCkKKyAgICA6IFdlYkNvcmU6OkNvb2tpZUphcihhZG9wdFJlZigqbmV3
IFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpKSB7IH0KKwogU3RyaW5nIFdlYkNvb2tpZUphcjo6
Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgJKHJldmlzaW9uIDI0MDEw
NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBACiAgICAgc3RkOjpwYWlyPFN0cmluZywgV2Vi
Q29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGNvbnN0IGZp
bmFsOwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSBmaW5hbDsKK3ByaXZhdGU6CisgICAg
V2ViQ29va2llSmFyKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTE2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1
c2luZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgICogV2Vi
S2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDEtMDQgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENTUCB2aW9sYXRpb24gcmVw
b3J0cyBzaG91bGQgYnlwYXNzIENTUCBjaGVja3MKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworY2xhc3MgUGFnZVN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Np
b25Qcm92aWRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQYWdlU3RvcmFnZVNlc3Npb25Q
cm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlU3RvcmFnZVNlc3Np
b25Qcm92aWRlcik7IH0KKworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3Rv
cmFnZVNlc3Npb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcGFnZSkKKyAgICAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KG1fcGFnZS0+c2Vzc2lvbklEKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICB2b2lkIHNldFBhZ2UoV2ViQ29yZTo6UGFnZSYgcGFnZSkKKyAgICB7CisgICAgICAgIG1f
cGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2UpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWFrUHRy
PFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsNyBAQAog
CQk1OThBRDkyODEyMDFDRjMyMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2subW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
OThBRDkyNzEyMDFDRjMyMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2subW0gKi87IH07CiAJCTU5OEFEOTJBMTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OThBRDkyOTEyMDFDRjNCMDBBQkFFNEUgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oICovOyB9OwogCQk1OThBREE0NjEyMDIy
NzUwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QURBNDUxMjAyMjc1MDAwQUJB
RTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1QzlFRjJGNTIxRjA2MUJFMDAzQkRDNTYg
LyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUVGMkY0MjFGMDYxQkUwMDNCREM1NiAvKiBQYWdlU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oICovOyB9OwogCQk1Q0U0NEY0QTIwNkQ3MEVBMDAzRUZEMDEg
LyogUGluZ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNFNDRGNDkyMDZENzBFOTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCAqLzsgfTsKIAkJ
NUQ3QkY4MTQwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZE
IC8qIFdlYkluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTVEN0JGODE1MEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDdCRjgxMzBD
MkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovOyB9OwpAQCAtOTg2LDYgKzk4Nyw3
IEBACiAJCTU5OEFEOTI3MTIwMUNGMzIwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1OThBRDkyOTEyMDFDRjNCMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2tJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU5OEFEQTQ1MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUM5RUYyRjQyMUYwNjFCRTAwM0JEQzU2IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmg7IHBhdGggPSBXZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTVDRTQ0RjQ5MjA2RDcwRTkwMDNFRkQw
MSAvKiBQaW5nSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBpbmdI
YW5kbGUuaDsgcGF0aCA9IFdlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwogCQk1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVj
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QkY4MTMwQzJBMUQ5MDAwOENFMDZEIC8q
IFdlYkluc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJJbnNwZWN0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTU0LDYg
KzI1NTYsNyBAQAogCQkJCUExMEMxRDQ0MTgyMDJGRkIwMDM2ODgzQSAvKiBpb3MgKi8sCiAJCQkJ
QjgyOTU4RDExMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovLAogCQkJCUI4
Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8sCisJCQkJNUM5
RUYyRjQyMUYwNjFCRTAwM0JEQzU2IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi8s
CiAJCQkJNUNFNDRGNDkyMDZENzBFOTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCAqLywKIAkJCQk3
QzAxQ0I4MTE3MzQzNUM5MDBDNUQ4MDcgLyogUG9wdXBNZW51TWFjLmggKi8sCiAJCQkJN0MwMUNC
ODIxNzM0MzVDOTAwQzVEODA3IC8qIFBvcHVwTWVudU1hYy5tbSAqLywKQEAgLTI3MzgsNiArMjc0
MSw3IEBACiAJCQkJOTNENDM2NkIxRDU3QUJFRTAwQUI4NUVBIC8qIERPTUNTU0ltcG9ydFJ1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzNjZEMUQ1N0FCRUUwMEFCODVFQSAvKiBET01DU1NN
ZWRpYVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzNjZGMUQ1N0FCRUUwMEFCODVFQSAv
KiBET01DU1NQYWdlUnVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUM5RUYyRjUyMUYwNjFCRTAw
M0JEQzU2IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0Q0MzY3MTFENTdBQkVFMDBBQjg1RUEgLyogRE9NQ1NTUHJpbWl0aXZlVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzRDQzNjczMUQ1N0FCRUUwMEFCODVFQSAvKiBET01DU1NQcmltaXRp
dmVWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0MzY3NDFENTdBQkVFMDBB
Qjg1RUEgLyogRE9NQ1NTUnVsZS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wMS0xNiAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0
b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3Jl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2Mv
V2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGFkZEltYWdlVG9DYWNoZTpmb3JVUkw6
Zm9yRnJhbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6
cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorCiAyMDE5LTAxLTE1ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVkdWNlIHVzZSBvZiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0JKHJldmlzaW9uIDI0MDEw
NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIu
aD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgog
CkBAIC01MCw2ICs1MSwxMyBAQAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+
CiAjZW5kaWYKIAorY2xhc3MgRGVmYXVsdFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMg
V2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAg
ICByZXR1cm4gJldlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCk7CisgICAgfQorfTsKKwogQGltcGxlbWVudGF0aW9uIFdlYkNhY2hlCiAKICsgKHZv
aWQpaW5pdGlhbGl6ZQpAQCAtMTY1LDcgKzE3Myw4IEBACiAgICAgaWYgKCFpbWFnZSB8fCAhdXJs
IHx8ICFbW3VybCBhYnNvbHV0ZVN0cmluZ10gbGVuZ3RoXSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5hZGRJbWFn
ZVRvQ2FjaGUoUmV0YWluUHRyPENHSW1hZ2VSZWY+KGltYWdlKSwgdXJsLCBmcmFtZSA/IGNvcmUo
ZnJhbWUpLT5kb2N1bWVudCgpLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIDogZW1wdHlTdHJp
bmcoKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV2ViQ29yZTo6Q29va2ll
SmFyOjpjcmVhdGUoKS5wdHIoKSk7CisgICAgYXV0byBwcm92aWRlciA9IGFkb3B0UmVmKCpuZXcg
RGVmYXVsdFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpOworICAgIHJldHVybiBXZWJDb3JlOjpNZW1v
cnlDYWNoZTo6c2luZ2xldG9uKCkuYWRkSW1hZ2VUb0NhY2hlKFJldGFpblB0cjxDR0ltYWdlUmVm
PihpbWFnZSksIHVybCwgZnJhbWUgPyBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+ZG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5U3RyaW5nKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCksIFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIp
KS5wdHIoKSk7CiB9CiAKICsgKHZvaWQpcmVtb3ZlSW1hZ2VGcm9tQ2FjaGVGb3JVUkw6KE5TVVJM
ICopdXJsCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkRPTUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVJhbmdl
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIlBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW1w
b3J0ICJTdG9yYWdlVGhyZWFkLmgiCiAjaW1wb3J0ICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aCIKICNpbXBvcnQgIldlYkFwcGxpY2F0aW9uQ2FjaGVJbnRlcm5hbC5oIgpAQCAtMTQ0MCw2ICsx
NDQxLDcgQEAKICAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRl
KGdyb3VwTmFtZSwgX3ByaXZhdGUtPnByZWZlcmVuY2VzLl9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgpOwogICAgIF9wcml2YXRlLT5ncm91cC0+YWRkV2ViVmlldyhzZWxmKTsKIAorICAgIGF1dG8g
c3RvcmFnZVByb3ZpZGVyID0gUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI6OmNyZWF0ZSgpOwog
ICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKAogICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkVkaXRvckNsaWVudD4oc2VsZiksCiAgICAgICAgIFNvY2tldFByb3ZpZGVyOjpj
cmVhdGUoKSwKQEAgLTE0NDYsNyArMTQ0OCw3IEBACiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVy
OjpjcmVhdGUoKSwKICAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0
ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZShzZWxmKSwKLSAgICAgICAgQ29v
a2llSmFyOjpjcmVhdGUoKQorICAgICAgICBDb29raWVKYXI6OmNyZWF0ZShzdG9yYWdlUHJvdmlk
ZXIuY29weVJlZigpKQogICAgICk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsK
QEAgLTE0NzcsNiArMTQ3OSw3IEBACiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQ
cm92aWRlciA9ICZfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpOwogICAg
IHBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rU3RvcmUgPSAmX3ByaXZhdGUtPmdyb3VwLT52
aXNpdGVkTGlua1N0b3JlKCk7CiAgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShXVEZNb3Zl
KHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgc3RvcmFnZVByb3ZpZGVyLT5zZXRQYWdlKCpfcHJp
dmF0ZS0+cGFnZSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0R3JvdXBOYW1lKGdyb3VwTmFt
ZSk7CiAKQEAgLTE3MDYsNiArMTcwOSw3IEBACiAgICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmll
d0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXco
c2VsZik7CiAKKyAgICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyOjpjcmVhdGUoKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlv
bigKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpLAogICAgICAg
ICBTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCksCkBAIC0xNzEyLDcgKzE3MTYsNyBAQAogICAgICAg
ICBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZVByb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUo
c2VsZiksCi0gICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKCkKKyAgICAgICAgQ29va2llSmFyOjpj
cmVhdGUoc3RvcmFnZVByb3ZpZGVyLmNvcHlSZWYoKSkKICAgICApOwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE3MzQsNiArMTczOCw3IEBACiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24ucGx1Z2luSW5mb1Byb3ZpZGVyID0gJldlYlBsdWdpbkluZm9Qcm92aWRlcjo6c2lu
Z2xldG9uKCk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24pKTsKKyAgICBzdG9yYWdlUHJvdmlkZXItPnNldFBhZ2UoKl9wcml2YXRlLT5w
YWdlKTsKICAgICAKICAgICBbc2VsZiBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ6WUVTXTsK
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDE5LTAxLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojppbml0
V2l0aEZyYW1lKToKKwogMjAxOS0wMS0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZHVjZSB1c2Ugb2YgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCisjaW5jbHVkZSAiUGFnZVN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlLmgiCkBA
IC0zMTA2LDYgKzMxMDcsNyBAQAogCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5z
cGVjdG9yQ2xpZW50KHRoaXMpOwogCisgICAgYXV0byBzdG9yYWdlUHJvdmlkZXIgPSBQYWdlU3Rv
cmFnZVNlc3Npb25Qcm92aWRlcjo6Y3JlYXRlKCk7CiAgICAgUGFnZUNvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbigKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHRoaXMp
LAogICAgICAgICBTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCksCkBAIC0zMTEyLDcgKzMxMTQsNyBA
QAogICAgICAgICBtYWtlVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPigpLAogICAgICAgICBX
ZWJDb3JlOjpDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIEJhY2tGb3J3
YXJkTGlzdDo6Y3JlYXRlKCksCi0gICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKCkKKyAgICAgICAg
Q29va2llSmFyOjpjcmVhdGUoc3RvcmFnZVByb3ZpZGVyLmNvcHlSZWYoKSkKICAgICApOwogICAg
IGNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKTsK
ICAgICBjb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRNZW51
Q2xpZW50KHRoaXMpOwpAQCAtMzEyOCw2ICszMTMwLDcgQEAKICAgICBjb25maWd1cmF0aW9uLnBs
dWdpbkluZm9Qcm92aWRlciA9ICZXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpOwog
CiAgICAgbV9wYWdlID0gbmV3IFBhZ2UoV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgc3Rv
cmFnZVByb3ZpZGVyLT5zZXRQYWdlKCpwYWdlKTsKICAgICBwcm92aWRlR2VvbG9jYXRpb25Ubyht
X3BhZ2UsICpuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQodGhpcykpOwogCiAgICAgbV9wYWdlLT5h
ZGRMYXlvdXRNaWxlc3RvbmVzKHsgRGlkRmlyc3RMYXlvdXQsIERpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dCB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359355</attachid>
            <date>2019-01-16 23:25:38 -0800</date>
            <delta_ts>2019-01-16 23:41:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193529-20190116232538.patch</filename>
            <type>text/plain</type>
            <size>73746</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE93bmVyc2hpcCBvZiB0
aGUgbWFwIHRoYXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBzZWFyY2hl
cyBuZWVkcyB0byBtb3ZlIHRvIHRoZSBXZWJLaXQvV2ViS2l0TGVnYWN5IGxheWVyLAorICAgICAg
ICBzbyB3aGVuIFdlYkNvcmUgdXNlZCB0byBsb29rIGluIHRoaXMgbWFwIGl0IG5lZWRzIHRvIGNh
bGwgYSBjbGllbnQgZnVuY3Rpb24gdG8gYXNrIHRoZSBsYXllciBhYm92ZSBpdCBmb3IgdGhlIHN0
b3JhZ2Ugb2JqZWN0LgorICAgICAgICBJJ3ZlIGNhbGxlZCB0aGlzIGNsaWVudCBTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyOjpzdG9yYWdlU2Vzc2lvbi4gIFJpZ2h0IG5vdyBpdCBqdXN0IGxvb2tzIGlu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24sCisgICAgICAgIGJ1dCB0aGlz
IGFkZGVkIGFic3RyYWN0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1vdmUgdGhlIGN1cnJlbnRs
eSBwcm9jZXNzLWdsb2JhbCBtYXAgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIE5ldHdvcmtQcm9jZXNz
IG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Q29va2llSmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzRW5h
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Nv
Y2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFByb3ZpZGVyOjpjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZURhdGFGb3JIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjp+U3RvcmFnZVNlc3Npb25Qcm92aWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0
cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Z2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSk6CisKIDIwMTktMDEtMTYgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVcGRh
dGUgdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIHRvIGFjdHVhbGx5IHVzZSB2ZXJ0
ZXggYnVmZmVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEyMyw3ICsx
MjQsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMCiAgICAgICAg
IFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQgPSBwYWdlID8gcGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwogICAgICAgICBTdHJpbmcgcGFydGl0aW9uID0gbV9kb2N1bWVudC0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKLSAgICAgICAgbV9oYW5kbGUgPSBtX3NvY2tldFByb3Zp
ZGVyLT5jcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUobV9oYW5kc2hha2UtPnVybCgpLCAqdGhpcywg
c2Vzc2lvbklELCBwYXJ0aXRpb24pOworICAgICAgICBtX2hhbmRsZSA9IG1fc29ja2V0UHJvdmlk
ZXItPmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShtX2hhbmRzaGFrZS0+dXJsKCksICp0aGlzLCBz
ZXNzaW9uSUQsIHBhcnRpdGlvbiwgZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAy
LDYgKzE5MDIsNyBAQAogCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4
dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsgfTsK
IAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QjQxOTFB
RUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzdDODhE
ODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBT
b2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTVDOUVGMkYzMjFGMDYxOTAwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlF
RjJGMjIxRjA2MTcxMDAzQkRDNTYgLyogU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQTFERUM2MUY3MUYx
QzcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTFERUM0MUY3MUU2ODcwMEU3MUJEMyAvKiBIVFRQSGVh
ZGVyRmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1Q0IzN0ZGRjFDNjJEMkExMDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzN0ZGRDFDNjJE
Mjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggKi87IH07CiAJCTVDQkM4REFEMUFB
QTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzhEQUIxQUFBMzAyMjAwRTFD
ODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmggKi87IH07CkBAIC02NDI3LDE3ICs2
NDI4LDE2IEBACiAJCTFDODQwQjlBMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExTTEdhdGhlckVudHJ5
UG9pbnRJdGVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzg0MEI5QjIxRUM0MDA5MDBEMDUwMEQg
LyogV0hMU0xDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMQ2hlY2tlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAv
KiBWZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNp
b24ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkU0MjFFRUQx
MkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQ0EwQzJFNTIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xGdW5jdGlvblN0YWdl
Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOUFFNUNBMjFFRDlERjUwMDY5RDVGMiAvKiBX
SExTTEhpZ2hab21iaWVGaW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xIaWdoWm9t
YmllRmluZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5QUU1Q0IyMUVE
OURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEhpZ2hab21iaWVGaW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNB
MEMyREUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNBMEMyRTAyMUVFQjVGNTAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQ0EwQzJFNDIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xG
dW5jdGlvblN0YWdlQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZ1bmN0aW9u
U3RhZ2VDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNBMEMyRTUy
MUVFRDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0EwQzJFQTIxRUVENkY1MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMEMyRUMyMUVFRDZGNjAwQTExODYwIC8qIFdITFNMTGl0
ZXJhbFR5cGVDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTGl0ZXJhbFR5cGVD
aGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5QUU1Q0EyMUVEOURG
NTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMSGlnaFpvbWJpZUZpbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQ0EwQzJGNDIxRUVEQUQwMDBBMTE4NjAgLyogV0hMU0xMb29wQ2hlY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTExvb3BDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMEMyRjUyMUVFREFEMTAwQTExODYwIC8qIFdITFNMTG9vcENo
ZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMb29wQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQ0EwQzJGNjIxRUVEQUQyMDBBMTE4NjAgLyogQVNUICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0g
QVNUOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0ExOUUwMzBEQzI1NTk1MDA2NUE5
OTQgLyogRXZlbnRMb29wTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRXZlbnRMb29wTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0Ex
OUUxNTBEQzI1NUNBMDA2NUE5OTQgLyogRXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV2ZW50TG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0FGMzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODkwOCw2ICs4OTA4LDcgQEAKIAkJNUM5Qjg2MEIxQzIxRTNDNjAwMTEw
RjM2IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkTWV0cmljcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM5RUYxNkYxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEdyYW1tYXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFRjE3MDFERkY3MTk5MDBBNDUyRTMgLyogWFBh
dGhHcmFtbWFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQYXRoR3JhbW1h
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJGMjIxRjA2MTcxMDAzQkRD
NTYgLyogU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDQTFERUMyMUY3MUU2ODYwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUEhlYWRlckZpZWxkLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMURFQzQxRjcxRTY4NzAwRTcxQkQzIC8q
IEhUVFBIZWFkZXJGaWVsZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVFRQ
SGVhZGVyRmllbGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkMxQzYy
RDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbmltYXRvck1vY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTcwMzIsNiArMTcwMzMsMTAwIEBACiAJCQl0YWJXaWR0aCA9IDg7
CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTFDQTBDMkY2MjFFRURBRDIwMEExMTg2MCAvKiBB
U1QgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDODQw
QjkwMjFFQzMwRjkwMEQwNTAwRCAvKiBXSExTTEFkZHJlc3NTcGFjZS5oICovLAorCQkJCUMyMUJG
NzI1MjFDRDg5RTIwMDIyNzk3OSAvKiBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oICovLAorCQkJ
CUMyMUJGNzA5MjFDRDg5Q0EwMDIyNzk3OSAvKiBXSExTTEFycmF5VHlwZS5oICovLAorCQkJCUMy
MUJGNzMwMjFDRDg5RUQwMDIyNzk3OSAvKiBXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggKi8s
CisJCQkJQzIxQkY3MEEyMUNEODlDQjAwMjI3OTc5IC8qIFdITFNMQmFzZUZ1bmN0aW9uQXR0cmli
dXRlLmggKi8sCisJCQkJQzIxQkY2RkEyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMQmFzZVNlbWFu
dGljLmggKi8sCisJCQkJQzIxQkY3MUUyMUNEODlEQzAwMjI3OTc5IC8qIFdITFNMQmxvY2suaCAq
LywKKwkJCQlDMjFCRjZGNjIxQ0Q4OUI3MDAyMjc5NzkgLyogV0hMU0xCb29sZWFuTGl0ZXJhbC5o
ICovLAorCQkJCUMyMUJGNzFBMjFDRDg5RDgwMDIyNzk3OSAvKiBXSExTTEJyZWFrLmggKi8sCisJ
CQkJQzIxMzhBMTMyMURERUNEMzAwRjUxNkJBIC8qIFdITFNMQnVpbHRJblNlbWFudGljLmNwcCAq
LywKKwkJCQlDMjFCRjcyMjIxQ0Q4OURGMDAyMjc5NzkgLyogV0hMU0xCdWlsdEluU2VtYW50aWMu
aCAqLywKKwkJCQlDMjFCRjcxNjIxQ0Q4OUQ1MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lv
bi5oICovLAorCQkJCUMyMUJGNzA2MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTENvbW1hRXhwcmVz
c2lvbi5oICovLAorCQkJCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50
RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNkY1MjFDRDg5QjUwMDIyNzk3OSAvKiBXSExTTENv
bnRpbnVlLmggKi8sCisJCQkJQzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZl
cmVuY2VFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MTgyMUNEODlENzAwMjI3OTc5IC8qIFdI
TFNMRG90RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNkZCMjFDRDg5QkUwMDIyNzk3OSAvKiBX
SExTTERvV2hpbGVMb29wLmggKi8sCisJCQkJQzIxQkY3MjgyMUNEODlFNTAwMjI3OTc5IC8qIFdI
TFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oICovLAorCQkJCTFDODQwQjdEMjFFQkUw
QjgwMEQwNTAwRCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8sCisJCQkJQzIxQkY3MjAyMUNE
ODlERDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8sCisJCQkJQzIx
QkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLywKKwkJ
CQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwuaCAqLywKKwkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9u
LmggKi8sCisJCQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMRmFsbHRocm91Z2gu
aCAqLywKKwkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwu
aCAqLywKKwkJCQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxU
eXBlLmNwcCAqLywKKwkJCQkxQ0I2OUIzNDIxREVENjNBMDA2RTg0NkEgLyogV0hMU0xGbG9hdExp
dGVyYWxUeXBlLmggKi8sCisJCQkJQzIxQkY3MzQyMUNEODlGMTAwMjI3OTc5IC8qIFdITFNMRm9y
TG9vcC5oICovLAorCQkJCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9u
QXR0cmlidXRlLmggKi8sCisJCQkJQzIxQkY2RkQyMUNEODlDMDAwMjI3OTc5IC8qIFdITFNMRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBX
SExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oICovLAorCQkJCUMyMUJGNkZGMjFDRDg5QzIwMDIyNzk3
OSAvKiBXSExTTElmU3RhdGVtZW50LmggKi8sCisJCQkJQzIxQkY2RjcyMUNEODlCOTAwMjI3OTc5
IC8qIFdITFNMSW5kZXhFeHByZXNzaW9uLmggKi8sCisJCQkJQzIwRjRGNjYyMURGRjIzNjAwNzBD
NDVBIC8qIFdITFNMSW50ZWdlckxpdGVyYWwuY3BwICovLAorCQkJCUMyMUJGNkY4MjFDRDg5QkIw
MDIyNzk3OSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmggKi8sCisJCQkJMUNCNjlCMzkyMURGMDNG
MzAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLywKKwkJCQkxQ0I2OUIz
NTIxREVENjQ5MDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLywKKwkJCQlD
MjFCRjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oICovLAor
CQkJCUMyMUJGNzE1MjFDRDg5RDQwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9u
LmggKi8sCisJCQkJQzIxQkY3MkQyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzJDMjFDRDg5RTkwMDIyNzk3OSAvKiBX
SExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oICovLAorCQkJCTFDMzMyNzcxMjFDRjBCRTEwMDBE
QzlGMiAvKiBXSExTTE5hbWVkVHlwZS5oICovLAorCQkJCUMyMUJGNzIzMjFDRDg5RTEwMDIyNzk3
OSAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLywKKwkJCQlDMjFCRjcyQTIx
Q0Q4OUU3MDAyMjc5NzkgLyogV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCAqLywKKwkJCQlD
MjFCRjcyNDIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOb2RlLmggKi8sCisJCQkJQzIxQkY3MDcy
MUNEODlDODAwMjI3OTc5IC8qIFdITFNMTnVsbExpdGVyYWwuaCAqLywKKwkJCQkxQ0I2OUIzQTIx
REYwNDAzMDA2RTg0NkEgLyogV0hMU0xOdWxsTGl0ZXJhbFR5cGUuY3BwICovLAorCQkJCTFDQjY5
QjM2MjFERUQ2NTcwMDZFODQ2QSAvKiBXSExTTE51bGxMaXRlcmFsVHlwZS5oICovLAorCQkJCUMy
MUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZS5oICovLAorCQkJCUMyMUJGNzJGMjFDRDg5RUMwMDIyNzk3OSAvKiBXSExTTFBvaW50ZXJUeXBl
LmggKi8sCisJCQkJQzIxQkY3MkUyMUNEODlFQTAwMjI3OTc5IC8qIFdITFNMUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNM
UXVhbGlmaWVyLmggKi8sCisJCQkJQzIxQkY3MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzBEMjFDRDg5Q0QwMDIyNzk3
OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLywKKwkJCQkxQ0I2OUIzMjIxREVENDBCMDA2RTg0
NkEgLyogV0hMU0xSZXNvbHZhYmxlVHlwZS5oICovLAorCQkJCUMyMTM4QTE1MjFEREVDRTkwMEY1
MTZCQSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuY3BwICovLAorCQkJCUMyMUJGNzA4MjFDRDg5
QzkwMDIyNzk3OSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjcwMzIx
Q0Q4OUM1MDAyMjc5NzkgLyogV0hMU0xSZXR1cm4uaCAqLywKKwkJCQlDMjFCRjZGOTIxQ0Q4OUJE
MDAyMjc5NzkgLyogV0hMU0xTZW1hbnRpYy5oICovLAorCQkJCUMyMTM4QTE2MjFEREVDRkIwMEY1
MTZCQSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAgKi8sCisJCQkJ
QzIxQkY3MzYyMUNEODlGMzAwMjI3OTc5IC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljLmggKi8sCisJCQkJQzIxMzhBMTcyMURERUQwRDAwRjUxNkJBIC8qIFdITFNMU3RhZ2VJ
bk91dFNlbWFudGljLmNwcCAqLywKKwkJCQlDMjFCRjcwRTIxQ0Q4OUNFMDAyMjc5NzkgLyogV0hM
U0xTdGFnZUluT3V0U2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjcxMjIxQ0Q4OUQxMDAyMjc5Nzkg
LyogV0hMU0xTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcyNzIxQ0Q4OUU0MDAyMjc5NzkgLyog
V0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY2RkUyMUNEODlDMTAwMjI3
OTc5IC8qIFdITFNMU3RydWN0dXJlRWxlbWVudC5oICovLAorCQkJCUMyMUJGNzE5MjFDRDg5RDcw
MDIyNzk3OSAvKiBXSExTTFN3aXRjaENhc2UuaCAqLywKKwkJCQlDMjFCRjczMTIxQ0Q4OUVFMDAy
Mjc5NzkgLyogV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcxQzIxQ0Q4OURB
MDAyMjc5NzkgLyogV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNkYzMjFD
RDg5QUQwMDIyNzk3OSAvKiBXSExTTFRyYXAuaCAqLywKKwkJCQlDMjFCRjcxRDIxQ0Q4OURCMDAy
Mjc5NzkgLyogV0hMU0xUeXBlLmggKi8sCisJCQkJQzI4OEM3MkQyMUM5OTFEQTAwMkRGNUNBIC8q
IFdITFNMVHlwZUFyZ3VtZW50LmNwcCAqLywKKwkJCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5Nzkg
LyogV0hMU0xUeXBlQXJndW1lbnQuaCAqLywKKwkJCQlDMjFCRjcyOTIxQ0Q4OUU2MDAyMjc5Nzkg
LyogV0hMU0xUeXBlRGVmaW5pdGlvbi5oICovLAorCQkJCUMyMEY0RjY0MjFERkJFNUMwMDcwQzQ1
QSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuY3BwICovLAorCQkJCUMyMUJGNzFGMjFDRDg5REMwMDIy
Nzk3OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLywKKwkJCQkxQzMzMjc3MjIxQ0YwRDJFMDAw
REM5RjIgLyogV0hMU0xVbm5hbWVkVHlwZS5oICovLAorCQkJCUMyMEY0RjY3MjFERkYzQTcwMDcw
QzQ1QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwICovLAorCQkJCUMyMUJGNzJC
MjFDRDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCAqLywKKwkJ
CQkxQ0I2OUIzQjIxREYwNDFFMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZS5jcHAgKi8sCisJCQkJMUNCNjlCMzcyMURFRDY2QjAwNkU4NDZBIC8qIFdITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLywKKwkJCQlDMjFCRjZGQzIxQ0Q4OUJGMDAyMjc5Nzkg
LyogV0hMU0xWYWx1ZS5oICovLAorCQkJCUMyMUJGNzEwMjFDRDg5RDAwMDIyNzk3OSAvKiBXSExT
TFZhcmlhYmxlRGVjbGFyYXRpb24uaCAqLywKKwkJCQlDMjFCRjcxNDIxQ0Q4OUQzMDAyMjc5Nzkg
LyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oICovLAorCQkJCUMyMUJGNzEz
MjFDRDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmggKi8sCisJCQkJQzIx
QkY3MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdITFNMV2hpbGVMb29wLmggKi8sCisJCQkpOworCQkJ
cGF0aCA9IEFTVDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTFDREQ0NDY2
MEJBOUM4MDAwMEY5MDE0NyAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xOTkzNSw2ICsyMDAzMCw3IEBACiAJCQkJNTEwRDRB
MzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICovLAogCQkJCTUxMEQ0
QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLywKIAkJ
CQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAg
Ki8sCisJCQkJNUM5RUYyRjIyMUYwNjE3MTAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIuaCAqLywKIAkJCQk0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCAqLywKIAkJCQlFMTgwODExMDE2RkNGNDJFMDBCODBEMDcgLyogU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUUxODA4MTE1MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBT
eW5jaHJvbm91c0xvYWRlckNsaWVudC5oICovLApAQCAtMjU1MDgsMTAwICsyNTYwNCw2IEBACiAJ
CQlwYXRoID0gV0hMU0w7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQkxQ0Ew
QzJGNjIxRUVEQUQyMDBBMTE4NjAgLyogQVNUICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQkxQzg0MEI5MDIxRUMzMEY5MDBEMDUwMEQgLyogV0hMU0xBZGRy
ZXNzU3BhY2UuaCAqLywKLQkJCQlDMjFCRjcyNTIxQ0Q4OUUyMDAyMjc5NzkgLyogV0hMU0xBcnJh
eVJlZmVyZW5jZVR5cGUuaCAqLywKLQkJCQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hM
U0xBcnJheVR5cGUuaCAqLywKLQkJCQlDMjFCRjczMDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xB
c3NpZ25tZW50RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzBBMjFDRDg5Q0IwMDIyNzk3OSAv
KiBXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJCUMyMUJGNkZBMjFDRDg5QkUw
MDIyNzk3OSAvKiBXSExTTEJhc2VTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzFFMjFDRDg5REMw
MDIyNzk3OSAvKiBXSExTTEJsb2NrLmggKi8sCi0JCQkJQzIxQkY2RjYyMUNEODlCNzAwMjI3OTc5
IC8qIFdITFNMQm9vbGVhbkxpdGVyYWwuaCAqLywKLQkJCQlDMjFCRjcxQTIxQ0Q4OUQ4MDAyMjc5
NzkgLyogV0hMU0xCcmVhay5oICovLAotCQkJCUMyMTM4QTEzMjFEREVDRDMwMEY1MTZCQSAvKiBX
SExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MjIyMUNEODlERjAwMjI3OTc5
IC8qIFdITFNMQnVpbHRJblNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MTYyMUNEODlENTAwMjI3
OTc5IC8qIFdITFNMQ2FsbEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwNjIxQ0Q4OUM3MDAy
Mjc5NzkgLyogV0hMU0xDb21tYUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjczMzIxQ0Q4OUYw
MDAyMjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjZGNTIx
Q0Q4OUI1MDAyMjc5NzkgLyogV0hMU0xDb250aW51ZS5oICovLAotCQkJCUMyMUJGNzAxMjFDRDg5
QzQwMDIyNzk3OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJG
NzE4MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFC
RjZGQjIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xEb1doaWxlTG9vcC5oICovLAotCQkJCUMyMUJG
NzI4MjFDRDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQu
aCAqLywKLQkJCQkxQzg0MEI3RDIxRUJFMEI4MDBEMDUwMEQgLyogV0hMU0xFbnRyeVBvaW50VHlw
ZS5oICovLAotCQkJCUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9u
RGVmaW5pdGlvbi5oICovLAotCQkJCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExTTEVu
dW1lcmF0aW9uTWVtYmVyLmggKi8sCi0JCQkJQzIxQkY3MDIyMUNEODlDNDAwMjI3OTc5IC8qIFdI
TFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggKi8sCi0JCQkJQzIxQkY3MEMyMUNEODlDQzAw
MjI3OTc5IC8qIFdITFNMRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzAwMjFDRDg5QzIwMDIy
Nzk3OSAvKiBXSExTTEZhbGx0aHJvdWdoLmggKi8sCi0JCQkJQzIxQkY3MzUyMUNEODlGMjAwMjI3
OTc5IC8qIFdITFNMRmxvYXRMaXRlcmFsLmggKi8sCi0JCQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4
NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgKi8sCi0JCQkJMUNCNjlCMzQyMURFRDYz
QTAwNkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5oICovLAotCQkJCUMyMUJGNzM0MjFD
RDg5RjEwMDIyNzk3OSAvKiBXSExTTEZvckxvb3AuaCAqLywKLQkJCQlDMjFCRjcwNTIxQ0Q4OUM3
MDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJCUMyMUJGNkZEMjFD
RDg5QzAwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLywKLQkJCQlDMjFC
RjZGNDIxQ0Q4OUIzMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLywKLQkJ
CQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0YXRlbWVudC5oICovLAotCQkJ
CUMyMUJGNkY3MjFDRDg5QjkwMDIyNzk3OSAvKiBXSExTTEluZGV4RXhwcmVzc2lvbi5oICovLAot
CQkJCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1QSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmNwcCAq
LywKLQkJCQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5o
ICovLAotCQkJCTFDQjY5QjM5MjFERjAzRjMwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFs
VHlwZS5jcHAgKi8sCi0JCQkJMUNCNjlCMzUyMURFRDY0OTAwNkU4NDZBIC8qIFdITFNMSW50ZWdl
ckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIxQkY3MzIyMUNEODlFRjAwMjI3OTc5IC8qIFdITFNM
TG9naWNhbEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyog
V0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzJEMjFDRDg5RTkwMDIy
Nzk3OSAvKiBXSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFC
RjcyQzIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCAqLywK
LQkJCQkxQzMzMjc3MTIxQ0YwQkUxMDAwREM5RjIgLyogV0hMU0xOYW1lZFR5cGUuaCAqLywKLQkJ
CQlDMjFCRjcyMzIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLmggKi8sCi0JCQkJQzIxQkY3MkEyMUNEODlFNzAwMjI3OTc5IC8qIFdITFNMTmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3MjQyMUNEODlFMTAwMjI3OTc5IC8qIFdITFNM
Tm9kZS5oICovLAotCQkJCUMyMUJGNzA3MjFDRDg5QzgwMDIyNzk3OSAvKiBXSExTTE51bGxMaXRl
cmFsLmggKi8sCi0JCQkJMUNCNjlCM0EyMURGMDQwMzAwNkU4NDZBIC8qIFdITFNMTnVsbExpdGVy
YWxUeXBlLmNwcCAqLywKLQkJCQkxQ0I2OUIzNjIxREVENjU3MDA2RTg0NkEgLyogV0hMU0xOdWxs
TGl0ZXJhbFR5cGUuaCAqLywKLQkJCQlDMjFCRjcyMTIxQ0Q4OURFMDAyMjc5NzkgLyogV0hMU0xO
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywKLQkJCQlDMjFCRjcyRjIxQ0Q4OUVDMDAy
Mjc5NzkgLyogV0hMU0xQb2ludGVyVHlwZS5oICovLAotCQkJCUMyMUJGNzJFMjFDRDg5RUEwMDIy
Nzk3OSAvKiBXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzBC
MjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTFF1YWxpZmllci5oICovLAotCQkJCUMyMUJGNzFCMjFD
RDg5RDkwMDIyNzk3OSAvKiBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCAqLywKLQkJ
CQlDMjFCRjcwRDIxQ0Q4OUNEMDAyMjc5NzkgLyogV0hMU0xSZWZlcmVuY2VUeXBlLmggKi8sCi0J
CQkJMUNCNjlCMzIyMURFRDQwQjAwNkU4NDZBIC8qIFdITFNMUmVzb2x2YWJsZVR5cGUuaCAqLywK
LQkJCQlDMjEzOEExNTIxRERFQ0U5MDBGNTE2QkEgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmNw
cCAqLywKLQkJCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmggKi8sCi0JCQkJQzIxQkY3MDMyMUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmgg
Ki8sCi0JCQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLywK
LQkJCQlDMjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJGNzM2MjFDRDg5RjMwMDIyNzk3OSAvKiBXSExT
TFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oICovLAotCQkJCUMyMTM4QTE3MjFEREVE
MEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3
MEUyMUNEODlDRTAwMjI3OTc5IC8qIFdITFNMU3RhZ2VJbk91dFNlbWFudGljLmggKi8sCi0JCQkJ
QzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMU3RhdGVtZW50LmggKi8sCi0JCQkJQzIx
QkY3MjcyMUNEODlFNDAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oICovLAot
CQkJCUMyMUJGNkZFMjFDRDg5QzEwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCAq
LywKLQkJCQlDMjFCRjcxOTIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xTd2l0Y2hDYXNlLmggKi8s
Ci0JCQkJQzIxQkY3MzEyMUNEODlFRTAwMjI3OTc5IC8qIFdITFNMU3dpdGNoU3RhdGVtZW50Lmgg
Ki8sCi0JCQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdITFNMVGVybmFyeUV4cHJlc3Np
b24uaCAqLywKLQkJCQlDMjFCRjZGMzIxQ0Q4OUFEMDAyMjc5NzkgLyogV0hMU0xUcmFwLmggKi8s
Ci0JCQkJQzIxQkY3MUQyMUNEODlEQjAwMjI3OTc5IC8qIFdITFNMVHlwZS5oICovLAotCQkJCUMy
ODhDNzJEMjFDOTkxREEwMDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8sCi0JCQkJ
QzIxQkY3MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8sCi0JCQkJ
QzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdITFNMVHlwZURlZmluaXRpb24uaCAqLywKLQkJ
CQlDMjBGNEY2NDIxREZCRTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLywK
LQkJCQlDMjFCRjcxRjIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmggKi8s
Ci0JCQkJMUMzMzI3NzIyMUNGMEQyRTAwMERDOUYyIC8qIFdITFNMVW5uYW1lZFR5cGUuaCAqLywK
LQkJCQlDMjBGNEY2NzIxREZGM0E3MDA3MEM0NUEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsLmNwcCAqLywKLQkJCQlDMjFCRjcyQjIxQ0Q4OUU4MDAyMjc5NzkgLyogV0hMU0xVbnNpZ25l
ZEludGVnZXJMaXRlcmFsLmggKi8sCi0JCQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdI
TFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFDQjY5QjM3MjFERUQ2
NkIwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJ
QzIxQkY2RkMyMUNEODlCRjAwMjI3OTc5IC8qIFdITFNMVmFsdWUuaCAqLywKLQkJCQlDMjFCRjcx
MDIxQ0Q4OUQwMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8sCi0JCQkJ
QzIxQkY3MTQyMUNEODlEMzAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQuaCAqLywKLQkJCQlDMjFCRjcxMzIxQ0Q4OUQyMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJs
ZVJlZmVyZW5jZS5oICovLAotCQkJCUMyMUJGNzA0MjFDRDg5QzYwMDIyNzk3OSAvKiBXSExTTFdo
aWxlTG9vcC5oICovLAotCQkJKTsKLQkJCXBhdGggPSBBU1Q7Ci0JCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwotCQl9OwogCQlDOTZGNUVCRjFCNTg3MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9u
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTMxNTQwLDYg
KzMxNTQyLDcgQEAKIAkJCQk1MUUwQkIzODBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzUwRDBFODMwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VO
YW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzc2MzZDMUEyRTY4QkIwMDlBN0VFMiAv
KiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDOUVGMkYz
MjFGMDYxOTAwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTY2RDNDRDFFOEVENDhGMDBBRDYyRTMgLyogU3RvcmFnZVR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFs
c1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDMzIC8q
IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDM0LDYgKzMy
NDM3LDcgQEAKIAkJCQlTcGFuaXNoLAogCQkJCUR1dGNoLAogCQkJCUl0YWxpYW4sCisJCQkJZW4s
CiAJCQkpOwogCQkJbWFpbkdyb3VwID0gMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYkNv
cmUgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyog
UHJvZHVjdHMgKi87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAkocmV2aXNp
b24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDEwICszNiwxNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiU2FtZVNpdGVJ
bmZvLmgiCisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUgPHd0
Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUmVmPENvb2tpZUph
cj4gQ29va2llSmFyOjpjcmVhdGUoUmVmPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+JiYgc3RvcmFn
ZVNlc3Npb25Qcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVKYXIo
V1RGTW92ZShzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKSkpOworfQorCiBJbmNsdWRlU2VjdXJlQ29v
a2llcyBDb29raWVKYXI6OnNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuICh1cmwucHJvdG9jb2xJ
cygiaHR0cHMiKSAmJiAhZG9jdW1lbnQuZm91bmRNaXhlZENvbnRlbnQoKS5jb250YWlucyhTZWN1
cml0eUNvbnRleHQ6Ok1peGVkQ29udGVudFR5cGU6OkFjdGl2ZSkpID8gSW5jbHVkZVNlY3VyZUNv
b2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObzsKQEAgLTUyLDkgKzU4LDkgQEAg
U2FtZVNpdGVJbmZvIENvb2tpZUphcjo6c2FtZVNpdGVJbmZvKGNvbgogICAgIHJldHVybiB7IH07
CiB9CiAKLVJlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRlKCkKK0Nvb2tpZUphcjo6Q29v
a2llSmFyKFJlZjxTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIpCisgICAgOiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIoV1RGTW92ZShzdG9yYWdlU2Vzc2lv
blByb3ZpZGVyKSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVKYXIpOwogfQog
CiBDb29raWVKYXI6On5Db29raWVKYXIoKSA9IGRlZmF1bHQ7CkBAIC03Myw3ICs3OSw3IEBAIFN0
cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQmIGRvY3UKICAgICB9CiAKICAgICBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQ7Ci0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFn
ZVNlc3Npb24oKSkKICAgICAgICAgcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llc0ZvckRPTShkb2N1
bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgIGVsc2UKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTAsMjQgKzExNiwyNCBAQCB2b2lkIENvb2tp
ZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jCiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byogc2Vzc2lv
biA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZG9jdW1lbnQuc2Vzc2lv
bklEKCkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LT5zdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICBzZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKICAgICBlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAorYm9vbCBDb29raWVKYXI6OmNvb2tpZXNF
bmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3QKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZG9jdW1lbnQuc2Vzc2lvbklE
KCkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5z
dG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Y29va2llc0VuYWJsZWQo
KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
c3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUph
cjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdAogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0
b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgICAgICByZXR1cm4geyByZXN1bHQuZmlyc3QsIHJl
c3VsdC5zZWNvbmQgPyBTZWN1cmVDb29raWVzQWNjZXNzZWQ6OlllcyA6IFNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZDo6Tm8gfTsKICAgICB9CkBAIC0xNjAsMTYgKzE2NiwxNiBAQCBib29sIENvb2tpZUph
cjo6Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2Fk
ZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZG9jdW1lbnQuc2Vzc2lvbklE
KCkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5z
dG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llcyk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ29va2llSmFyOjpkZWxldGVDb29raWUo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lKQordm9pZCBDb29raWVKYXI6OmRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKGRvY3Vt
ZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Np
b25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgc2Vzc2lvbi0+ZGVsZXRlQ29v
a2llKHVybCwgY29va2llTmFtZSk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgJKHJldmlzaW9uIDI0MDEwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFBBTCB7CkBAIC00MCwxMSArNDEsMTMgQEAgZW51bSBjbGFzcyBTZWN1
cmVDb29raWVzQWNjZXNzZWQgOiBib29sIAogY2xhc3MgRG9jdW1lbnQ7CiBzdHJ1Y3QgQ29va2ll
Owogc3RydWN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5OworY2xhc3MgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOworY2xhc3MgU3RvcmFnZVNlc3Npb25Qcm92aWRlcjsKIHN0cnVjdCBTYW1l
U2l0ZUluZm87CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIENvb2tpZUphciA6IHB1YmxpYyBSZWZD
b3VudGVkPENvb2tpZUphcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29va2llSmFyPiBj
cmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPENvb2tpZUphcj4gY3JlYXRlKFJlZjxTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyPiYmKTsKICAgICAKICAgICBzdGF0aWMgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkUHJveHkgY29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29uc3QgRG9jdW1lbnQmLCBj
b25zdCBVUkwmKTsKIApAQCAtNjMsNiArNjYsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IHN0YXRpYyBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvKGNvbnN0IERvY3VtZW50Jik7CiAgICAg
c3RhdGljIEluY2x1ZGVTZWN1cmVDb29raWVzIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGNv
bnN0IERvY3VtZW50JiwgY29uc3QgVVJMJik7CisgICAgQ29va2llSmFyKFJlZjxTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZWY8U3RvcmFnZVNlc3Npb25Qcm92
aWRlcj4gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9u
IDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MzUsNiArNTM1LDEwIEBAIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3AKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1l
c3BhY2UpOwogfQogCitjbGFzcyBFbXB0eVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMg
U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9y
YWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK307CisKIFBhZ2VD
b25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpCiB7CiAgICAg
UGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb24gewpAQCAtNTQzLDcgKzU0Nyw3IEBA
IFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEUKICAgICAgICAgTGliV2Vi
UlRDUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3Jl
YXRlKCksCiAgICAgICAgIGFkb3B0UmVmKCpuZXcgRW1wdHlCYWNrRm9yd2FyZENsaWVudCksCi0g
ICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKCkKKyAgICAgICAgQ29va2llSmFyOjpjcmVhdGUoYWRv
cHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpKQogICAgIH07CiAKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlDaHJvbWVDbGllbnQ+IGR1bW15Q2hyb21lQ2xpZW50
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNjYsNyArMTY3LDcgQEAg
ZW51bSBjbGFzcyBEaWRXcmFwIDogYm9vbDsKIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5
IDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogYm9v
bDsKIAotY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPiB7CitjbGFzcyBQ
YWdlIDogcHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
UGFnZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nc0Jhc2U7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVmPFNvY2tldFN0cmVh
bUhhbmRsZT4gU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBV
UkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uKQorUmVmPFNvY2tl
dFN0cmVhbUhhbmRsZT4gU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShj
b25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBjb25z
dCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKiBwcm92aWRlcikKIHsKLSAgICByZXR1cm4gU29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKHVybCwgY2xpZW50LCBzZXNzaW9uSUQsIGNyZWRlbnRp
YWxQYXJ0aXRpb24sIHsgfSk7CisgICAgcmV0dXJuIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNy
ZWF0ZSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCB7IH0sIHBy
b3ZpZGVyKTsKIH0KICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJv
dmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVy
LmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOwogY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50OwpAQCAtMzgsNyArMzksNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQ7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb2NrZXRQcm92aWRlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTb2NrZXRQcm92aWRlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8U29ja2V0UHJvdmlkZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0
UHJvdmlkZXIpOyB9Ci0gICAgdmlydHVhbCBSZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVT
b2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jiwg
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CisgICAg
dmlydHVhbCBSZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUo
Y29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92
aWRlciopOwogICAgIHZpcnR1YWwgflNvY2tldFByb3ZpZGVyKCkgeyB9OwogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRl
eHQuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiAKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8
TmV0d29ya2luZ0NvbnRleHQ+IHsKK2NsYXNzIE5ldHdvcmtpbmdDb250ZXh0IDogcHVibGljIFN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk5ldHdvcmtpbmdD
b250ZXh0KCkgPSBkZWZhdWx0OwogCkBAIC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7IH0KIAotICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0ID0gMDsKLQogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNv
bnN0ID0gMDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwCShyZXZpc2lvbiAyNDAx
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw5ICs3Niw4IEBAIHN0YXRpYyBzaXplX3Qg
cmVtb3ZlVGVybWluYXRpb25DaGFyYWN0ZXIKICAgICByZXR1cm4gZGF0YUxlbmd0aCAtIDI7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPj4gY29v
a2llRGF0YUZvckhhbmRzaGFrZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYg
aGVhZGVyRmllbGRQcm94eSkKK3N0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8VmVjdG9yPHVpbnQ4
X3Q+LCBib29sPj4gY29va2llRGF0YUZvckhhbmRzaGFrZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkUHJveHkmIGhlYWRlckZpZWxkUHJveHkpCiB7Ci0gICAgYXV0byBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKGhlYWRlckZpZWxk
UHJveHkuc2Vzc2lvbklEKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKQEAgLTEwMyw3ICsxMDIsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuCiAgICAgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQgPSBmYWxzZTsKIAogICAgIGlmIChoZWFkZXJGaWVsZFByb3h5KSB7Ci0gICAgICAg
IGF1dG8gY29va2llRGF0YUZyb21OZXR3b3JrU2Vzc2lvbiA9IGNvb2tpZURhdGFGb3JIYW5kc2hh
a2UoaGVhZGVyRmllbGRQcm94eS52YWx1ZSgpKTsKKyAgICAgICAgYXV0byBjb29raWVEYXRhRnJv
bU5ldHdvcmtTZXNzaW9uID0gY29va2llRGF0YUZvckhhbmRzaGFrZShtX3N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIgPyBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkgOiBu
dWxscHRyLCAqaGVhZGVyRmllbGRQcm94eSk7CiAgICAgICAgIGlmICghY29va2llRGF0YUZyb21O
ZXR3b3JrU2Vzc2lvbikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UsIGZh
bHNlKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmFnZVNlc3Npb25Q
cm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFBBTCB7CitjbGFzcyBT
ZXNzaW9uSUQ7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOworCitjbGFzcyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIH5TdG9yYWdlU2Vzc2lvblByb3ZpZGVyKCkgeyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24g
MjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxMyBAQCB0eXBlZGVm
IHN0cnVjdCBfX0NGSFRUUE1lc3NhZ2UqIENGSFRUUE1lCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOwogY2xhc3Mg
UHJvdGVjdGlvblNwYWNlOwogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFz
cyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsIDogcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNl
QXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNvY2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQsIHNlc3Npb25JRCwgY3JlZGVudGlh
bFBhcnRpdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNvY2tl
dFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBjcmVkZW50aWFsUGFydGl0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRp
dERhdGEsIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqIHByb3ZpZGVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQsIHNlc3Npb25J
RCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpLCBwcm92aWRlcikpOyB9
CiAKICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsKCk7CiAKQEAgLTU4LDcgKzU5
LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFs
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNy
ZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRp
YWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmLCBjb25zdCBTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKik7CiAgICAgdm9pZCBjcmVhdGVTdHJlYW1zKCk7CiAgICAgdm9pZCBz
Y2hlZHVsZVN0cmVhbXMoKTsKICAgICB2b2lkIGNob29zZVByb3h5KCk7CkBAIC0xMDMsNiArMTA0
LDcgQEAgcHJpdmF0ZToKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBTdHJp
bmcgbV9jcmVkZW50aWFsUGFydGl0aW9uOwogICAgIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tl
biBtX2F1ZGl0RGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlcj4g
bV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyOwogCiAgICAgU3RyZWFtQnVmZmVyPHVpbnQ4X3QsIDEw
MjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4QnVmZmVy
U2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaCIKKyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGTmV0d29yay5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgpAQCAtOTUsNyArOTYsNyBAQCBzdGF0aWMgaW5saW5lIGF1dG8gY2FsbGJh
Y2tzUnVuTG9vcE1vZGUoCiAjZW5kaWYKIH0KIAotU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVk
ZW50aWFsUGFydGl0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEp
CitTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVS
TCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRl
ciogcHJvdmlkZXIpCiAgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpCiAgICAg
LCBtX2Nvbm5lY3RpbmdTdWJzdGF0ZShOZXcpCiAgICAgLCBtX2Nvbm5lY3Rpb25UeXBlKFVua25v
d24pCkBAIC0xMDMsNiArMTA0LDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0U3Ry
ZWFtSGFuZAogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9jcmVkZW50aWFs
UGFydGl0aW9uKGNyZWRlbnRpYWxQYXJ0aXRpb24pCiAgICAgLCBtX2F1ZGl0RGF0YShXVEZNb3Zl
KGF1ZGl0RGF0YSkpCisgICAgLCBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIocHJvdmlkZXIpCiB7
CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIs
IHRoaXMsICZtX2NsaWVudCk7CiAKQEAgLTM2Nyw3ICszNjksNyBAQCBib29sIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmdldFN0b3JlZENPCiAKICAgICAvLyBUcnkgc3lzdGVtIGNyZWRlbnRpYWwg
c3RvcmFnZSBmaXJzdCwgbWF0Y2hpbmcgSFRUUCBiZWhhdmlvciAoQ0ZOZXR3b3JrIG9ubHkgYXNr
cyB0aGUgY2xpZW50IGZvciBwYXNzd29yZCBpZiBpdCBjb3VsZG4ndCBmaW5kIGl0IGluIEtleWNo
YWluKS4KICAgICBDcmVkZW50aWFsIHN0b3JlZENyZWRlbnRpYWw7Ci0gICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihtX3Nl
c3Npb25JRCkpIHsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3N0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIgPyBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkg
OiBudWxscHRyKSB7CiAgICAgICAgIHN0b3JlZENyZWRlbnRpYWwgPSBzdG9yYWdlU2Vzc2lvbi0+
Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlvblNw
YWNlKTsKICAgICAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWwuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgc3RvcmVkQ3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgp
LmdldChtX2NyZWRlbnRpYWxQYXJ0aXRpb24sIHByb3RlY3Rpb25TcGFjZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDEwICs0NCwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CitjbGFzcyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOwog
CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsIDogcHVibGljIFNvY2tldFN0cmVhbUhhbmRs
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVh
dGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVu
dCkpOyB9CisgICAgc3RhdGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYsIGNvbnN0
IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFN0
cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQpKTsgfQogCiAgICAgdmlydHVhbCB+U29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHJldmlz
aW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC01MSw3ICs1Miw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKIAog
Y2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1I
YW5kbGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4g
Y3JlYXRlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CisgICAg
c3RhdGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29uc3QgVVJMJiwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNv
dXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
Kik7CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCiAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbFNvdXAuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAorCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MgTHRkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgpAQCAt
NDEsNiArNDIsNyBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCiAjaW5jbHVkZSAi
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9u
LmgiCisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIlVSTFNv
dXAuaCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtODEsMTIg
KzgzLDEyIEBAIHN0YXRpYyB2b2lkIHNvY2tldENsaWVudEV2ZW50Q2FsbGJhY2soR1MKIH0KICNl
bmRpZgogCi1SZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVu
dCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNh
dGlvbkF1ZGl0VG9rZW4mJikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNv
dXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
KiBzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKQogewogICAgIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsPiBzb2NrZXQgPSBhZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBj
bGllbnQpKTsKIAogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2MSwgOTApCi0gICAgYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpOworICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3Jh
Z2VTZXNzaW9uUHJvdmlkZXIgPyBzdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lv
bigpIDogbnVsbHB0cjsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAg
cmV0dXJuIHNvY2tldDsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTkt
MDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24gaW4g
V2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRT
dHJlYW0pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTb2NrZXRTdHJlYW06Ok5ldHdvcmtTb2NrZXRTdHJlYW0pOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRQcm92
aWRlcjo6Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpXZWJDb29r
aWVKYXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaDoKKwog
MjAxOS0wMS0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGEgbmV3IFNQSSBmb3IgY29udHJvbGxpbmcgZ2V0VXNlck1lZGlhCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjcmVhCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdG9rZW4gPSB7IG1fbmV0d29ya1By
b2Nlc3MtPnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgfTsKICNlbmRpZgotICAgIG1fbmV0
d29ya1NvY2tldFN0cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNy
ZWF0ZShXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIs
IG1fY29ubmVjdGlvbiwgV1RGTW92ZSh0b2tlbikpKTsKKyAgICBtX25ldHdvcmtTb2NrZXRTdHJl
YW1zLnNldChpZGVudGlmaWVyLCBOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUobV9uZXR3b3Jr
UHJvY2Vzcy5nZXQoKSwgV1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQsIGNhY2hlUGFydGl0aW9uLCBp
ZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24sIFdURk1vdmUodG9rZW4pKSk7CiB9CiAKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlc3Ryb3lTb2NrZXRTdHJlYW0odWludDY0X3Qg
aWRlbnRpZmllcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBu
YW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIENhY2hlOwogfQogCi1jbGFzcyBOZXR3b3Jr
UHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpD
bGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzcz4KK2NsYXNz
IE5ldHdvcmtQcm9jZXNzIDogcHVibGljIENoaWxkUHJvY2VzcywgcHJpdmF0ZSBEb3dubG9hZE1h
bmFnZXI6OkNsaWVudCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE5ldHdvcmtQcm9jZXNz
PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtQcm9jZXNzPgogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogICAgICwgcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFja2lu
Z1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCShyZXZpc2lv
biAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRT
dHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTmV0
d29ya1NvY2tldFN0cmVhbS5oIgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
U3RyZWFtTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1FcnJvci5oPgpAQCAt
MzQsMTUgKzM1LDE1IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6Y3Jl
YXRlKFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNy
ZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQorUmVm
PE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZp
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRv
a2VuJiYgYXVkaXREYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTb2Nr
ZXRTdHJlYW0oV1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGlk
ZW50aWZpZXIsIGNvbm5lY3Rpb24sIFdURk1vdmUoYXVkaXREYXRhKSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE5ldHdvcmtTb2NrZXRTdHJlYW0obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUo
dXJsKSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0
aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KIAotTmV0d29ya1NvY2tldFN0cmVhbTo6TmV0
d29ya1NvY2tldFN0cmVhbShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1
ZGl0RGF0YSkKK05ldHdvcmtTb2NrZXRTdHJlYW06Ok5ldHdvcmtTb2NrZXRTdHJlYW0oTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlm
aWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRU
b2tlbiYmIGF1ZGl0RGF0YSkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwg
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2ltcGwoU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6Y3JlYXRlKHVybCwgKnRoaXMsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwg
V1RGTW92ZShhdWRpdERhdGEpKSkKKyAgICAsIG1faW1wbChTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpjcmVhdGUodXJsLCAqdGhpcywgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZN
b3ZlKGF1ZGl0RGF0YSksIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUobmV0
d29ya1Byb2Nlc3MsIHNlc3Npb25JRCkucHRyKCkpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAkocmV2aXNp
b24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0
U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDExIEBAIGNsYXNzIERhdGFSZWZl
cmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBOZXR3b3JrUHJvY2VzczsKKwog
Y2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2Nr
ZXRTdHJlYW0+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQ
QUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRf
dCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2Vu
JiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgVVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQ
YXJ0aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTb3VyY2VBcHBs
aWNhdGlvbkF1ZGl0VG9rZW4mJik7CiAgICAgfk5ldHdvcmtTb2NrZXRTdHJlYW0oKTsKIAogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CkBAIC02Miw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgZmluYWw7CiAKLSAgICBOZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwg
SVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYp
OworICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0oTmV0d29ya1Byb2Nlc3MmLCBVUkwmJiwgUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsK
IAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBJUEM6OkNvbm5lY3Rpb24mIG1fY29u
bmVjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXI+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IFBBTDo6U2Vz
c2lvbklEJiBzZXNzaW9uSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIobmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCkpOyB9CisgICAgCitwcml2
YXRlOgorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKKyAgICAgICAg
OiBtX25ldHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdvcmtQcm9jZXNzKSkKKyAgICAgICAg
LCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpIHsgfQorCisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBp
ZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgV2Vha1B0cjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3
b3JrUHJvY2VzczsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKK307CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQ0NSw2ICszNDQ1LDcgQEAKIAkJNUM4REQz
ODExRkU0NTVDQTAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVF1aXJrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVBdXRvcGxheVF1aXJrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1NjgwMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQ
b2xpY2llcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1dlYnNp
dGVQb2xpY2llcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1NjgxMURG
N0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMjZE
N0YyMTdBQkJCNjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMjZEODAyMTdBQkJCNjAwRjk3QTM1IC8q
IFdLU2FmZUJyb3dzaW5nV2FybmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1NhZmVCcm93c2luZ1dhcm5pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dzaW5nV2FybmluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQzOSw2ICs2NDQwLDcgQEAKIAkJCQk1QzBCMTc3RDFF
N0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgKi8sCiAJCQkJNUMwQjE3
N0UxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0uaCAqLywKIAkJCQk1QzBC
MTc3RjFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbiAq
LywKKwkJCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIuaCAqLywKIAkJCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQu
Y3BwICovLAogCQkJCTVDRTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5nTG9hZC5oICovLAog
CQkJCTgzQTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5jcHAgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29j
a2V0UHJvdmlkZXIuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLVJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYg
Y2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bFBhcnRpdGlvbikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFdlYlNvY2tldFByb3ZpZGVyOjpj
cmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
Y3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopCiB7CiAg
ICAgcmV0dXJuIFdlYlNvY2tldFN0cmVhbTo6Y3JlYXRlKHVybCwgY2xpZW50LCBzZXNzaW9uSUQs
IGNyZWRlbnRpYWxQYXJ0aXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCShyZXZpc2lvbiAyNDAxMDQp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViU29ja2V0UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U29ja2V0UHJvdmlk
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0UHJvdmlkZXI+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0UHJvdmlkZXIpOyB9Ci0gICAgUmVmPFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0
IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOworICAgIFJlZjxXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBV
UkwmLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBjb25zdCBXZWJDb3JlOjpTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKikgZmluYWw7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0UHJvdmlkZXIo
KSB7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llSmFyLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
OSArMzQsMTggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMgV2Vi
Q29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CisgICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNz
aW9ucyBhcmUgYWNjZXNzZWQgb25seSBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCisgICAgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KK307CisKK1dlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKKyAg
ICA6IFdlYkNvcmU6OkNvb2tpZUphcihhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIpKSB7IH0KKwogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlEOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llSmFyLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw4IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVD
b29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6
U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNv
bnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOworcHJpdmF0ZToKKyAgICBXZWJDb29raWVKYXIo
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTI5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRMZWdhY3kueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0wNCAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NQIHZpb2xhdGlvbiByZXBvcnRzIHNob3VsZCBi
eXBhc3MgQ1NQIGNoZWNrcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BhZ2VTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitjbGFzcyBQYWdlU3RvcmFnZVNlc3Npb25Q
cm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKTsg
fQorCisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9wYWdlKQorICAgICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24obV9wYWdlLT5zZXNz
aW9uSUQoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHZvaWQgc2V0
UGFnZShXZWJDb3JlOjpQYWdlJiBwYWdlKQorICAgIHsKKyAgICAgICAgbV9wYWdlID0gbWFrZVdl
YWtQdHIocGFnZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYWtQdHI8V2ViQ29yZTo6UGFn
ZT4gbV9wYWdlOworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBACiAJCTU5OEFEOTI4MTIw
MUNGMzIwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTI3MTIwMUNG
MzIwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSAqLzsgfTsK
IAkJNTk4QUQ5MkExMjAxQ0YzQjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJNb2NrSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5OEFEOTI5MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9ja0ludGVybmFsLmggKi87IH07CiAJCTU5OEFEQTQ2MTIwMjI3NTAwMEFCQUU0RSAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OThBREE0NTEyMDIyNzUwMDBBQkFFNEUgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTVDOUVGMkY1MjFGMDYxQkUwMDNCREM1NiAvKiBQYWdlU3RvcmFn
ZVNlc3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM5RUYyRjQyMUYwNjFCRTAwM0JEQzU2IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLmggKi87IH07CiAJCTVDRTQ0RjRBMjA2RDcwRUEwMDNFRkQwMSAvKiBQaW5nSGFuZGxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U0NEY0
OTIwNkQ3MEU5MDAzRUZEMDEgLyogUGluZ0hhbmRsZS5oICovOyB9OwogCQk1RDdCRjgxNDBDMkEx
RDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVj
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NUQ3QkY4MTUwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEN0JGODEzMEMyQTFEOTAwMDhDRTA2
RCAvKiBXZWJJbnNwZWN0b3IubW0gKi87IH07CkBAIC05ODYsNiArOTg3LDcgQEAKIAkJNTk4QUQ5
MjcxMjAxQ0YzMjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5OEFE
OTI5MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0lu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTk4QURBNDUxMjAyMjc1MDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJGNDIxRjA2
MUJFMDAzQkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDsgcGF0aCA9
IFdlYkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJNUNFNDRGNDkyMDZENzBFOTAwM0VGRDAxIC8qIFBpbmdIYW5k
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGluZ0hhbmRsZS5oOyBwYXRo
ID0gV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CiAJCTVEN0JGODEyMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RDdCRjgxMzBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9y
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rv
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NTQsNiArMjU1Niw3IEBACiAJ
CQkJQTEwQzFENDQxODIwMkZGQjAwMzY4ODNBIC8qIGlvcyAqLywKIAkJCQlCODI5NThEMTEzMjcw
N0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8sCiAJCQkJQjgyOTU4RDIxMzI3MDdE
MDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLywKKwkJCQk1QzlFRjJGNDIxRjA2MUJF
MDAzQkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk1Q0U0NEY0
OTIwNkQ3MEU5MDAzRUZEMDEgLyogUGluZ0hhbmRsZS5oICovLAogCQkJCTdDMDFDQjgxMTczNDM1
QzkwMEM1RDgwNyAvKiBQb3B1cE1lbnVNYWMuaCAqLywKIAkJCQk3QzAxQ0I4MjE3MzQzNUM5MDBD
NUQ4MDcgLyogUG9wdXBNZW51TWFjLm1tICovLApAQCAtMjkzNCw2ICsyOTM3LDcgQEAKIAkJCQlF
MTUzMUJEODIxODdCOTU0MDAyRTNGODEgLyogTlNVUkxEb3dubG9hZFNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNENDM3OUIxRDU3QUJFRjAwQUI4NUVBIC8qIE9iakNFdmVudExpc3RlbmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0Mzc5RDFENTdBQkVGMDBBQjg1RUEgLyogT2JqQ05vZGVG
aWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTVDOUVGMkY1MjFGMDYxQkUwMDNC
REM1NiAvKiBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUNFNDRGNEEyMDZENzBFQTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExMEMxRDVGMTgyMDMwMEUwMDM2ODgzQSAvKiBQb3B1cE1lbnVJT1MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDMDFDQjg1MTczNDM1QzkwMEM1RDgwNyAvKiBQb3B1cE1lbnVNYWMuaCBpbiBI
ZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjQw
MTA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYkNhY2hlLm1tOgorICAgICAgICAoK1tX
ZWJDYWNoZSBhZGRJbWFnZVRvQ2FjaGU6Zm9yVVJMOmZvckZyYW1lOl0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBpbml0U2lt
cGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZlcmVuY2VzOmdyb3VwTmFtZTpdKToK
KwogMjAxOS0wMS0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJlZHVjZSB1c2Ugb2YgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJDYWNoZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYkNhY2hlLm1tCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYkNhY2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2ltcG9ydCA8
V2ViQ29yZS9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVh
ZC5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIApAQCAtNTAsNiArNTEsMTMgQEAKICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgogI2VuZGlmCiAKK2NsYXNzIERlZmF1bHRT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIgeworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Np
b24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuICZXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworICAgIH0KK307CisKIEBp
bXBsZW1lbnRhdGlvbiBXZWJDYWNoZQogCiArICh2b2lkKWluaXRpYWxpemUKQEAgLTE2NSw3ICsx
NzMsOCBAQCArIChib29sKWFkZEltYWdlVG9DYWNoZTooQ0dJbWFnZVJlZilpbWFnCiAgICAgaWYg
KCFpbWFnZSB8fCAhdXJsIHx8ICFbW3VybCBhYnNvbHV0ZVN0cmluZ10gbGVuZ3RoXSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5n
bGV0b24oKS5hZGRJbWFnZVRvQ2FjaGUoUmV0YWluUHRyPENHSW1hZ2VSZWY+KGltYWdlKSwgdXJs
LCBmcmFtZSA/IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlv
bigpIDogZW1wdHlTdHJpbmcoKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwg
V2ViQ29yZTo6Q29va2llSmFyOjpjcmVhdGUoKS5wdHIoKSk7CisgICAgYXV0byBwcm92aWRlciA9
IGFkb3B0UmVmKCpuZXcgRGVmYXVsdFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpOworICAgIHJldHVy
biBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuYWRkSW1hZ2VUb0NhY2hlKFJldGFp
blB0cjxDR0ltYWdlUmVmPihpbWFnZSksIHVybCwgZnJhbWUgPyBjb3JlKGZyYW1lKS0+ZG9jdW1l
bnQoKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5U3RyaW5nKCksIFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKFdU
Rk1vdmUocHJvdmlkZXIpKS5wdHIoKSk7CiB9CiAKICsgKHZvaWQpcmVtb3ZlSW1hZ2VGcm9tQ2Fj
aGVGb3JVUkw6KE5TVVJMICopdXJsCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIlBhZ2VTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLmgiCiAjaW1wb3J0ICJTdG9yYWdlVGhyZWFkLmgiCiAjaW1wb3J0ICJXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaCIKICNpbXBvcnQgIldlYkFwcGxpY2F0aW9uQ2FjaGVJbnRlcm5hbC5o
IgpAQCAtMTQ0MCwxMyArMTQ0MSwxNCBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hCiAgICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0
ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7CiAKKyAgICBhdXRv
IHN0b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUoKTsK
ICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbigKICAgICAgICAgbWFrZVVu
aXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpLAogICAgICAgICBTb2NrZXRQcm92aWRlcjo6
Y3JlYXRlKCksCiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAg
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBCYWNrRm9y
d2FyZExpc3Q6OmNyZWF0ZShzZWxmKSwKLSAgICAgICAgQ29va2llSmFyOjpjcmVhdGUoKQorICAg
ICAgICBDb29raWVKYXI6OmNyZWF0ZShzdG9yYWdlUHJvdmlkZXIuY29weVJlZigpKQogICAgICk7
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21l
Q2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKQEAgLTE0NzcsNiArMTQ3OSw3IEBA
IC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBwYWdlQ29uZmln
dXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0gJl9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRl
bnRDb250cm9sbGVyKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtTdG9yZSA9
ICZfcHJpdmF0ZS0+Z3JvdXAtPnZpc2l0ZWRMaW5rU3RvcmUoKTsKICAgICBfcHJpdmF0ZS0+cGFn
ZSA9IG5ldyBQYWdlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBzdG9yYWdlUHJv
dmlkZXItPnNldFBhZ2UoKl9wcml2YXRlLT5wYWdlKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXRHcm91cE5hbWUoZ3JvdXBOYW1lKTsKIApAQCAtMTcwNiwxMyArMTcwOSwxNCBAQCAtIChpZClp
bml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOCiAgICAgX3ByaXZhdGUtPmdyb3VwID0g
V2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNl
cy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdl
YlZpZXcoc2VsZik7CiAKKyAgICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyOjpjcmVhdGUoKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmln
dXJhdGlvbigKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpLAog
ICAgICAgICBTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIExpYldlYlJUQ1Byb3Zp
ZGVyOjpjcmVhdGUoKSwKICAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNy
ZWF0ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZShzZWxmKSwKLSAgICAgICAg
Q29va2llSmFyOjpjcmVhdGUoKQorICAgICAgICBDb29raWVKYXI6OmNyZWF0ZShzdG9yYWdlUHJv
dmlkZXIuY29weVJlZigpKQogICAgICk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xp
ZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudElPUyhzZWxmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQpAQCAtMTczNCw2ICsxNzM4LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdp
dGhTdHlsZTooTgogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBsdWdpbkluZm9Qcm92aWRlciA9ICZX
ZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2Ug
PSBuZXcgUGFnZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgc3RvcmFnZVByb3Zp
ZGVyLT5zZXRQYWdlKCpfcHJpdmF0ZS0+cGFnZSk7CiAgICAgCiAgICAgW3NlbGYgc2V0U21hcnRJ
bnNlcnREZWxldGVFbmFibGVkOllFU107CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wMS0xNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNp
bmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3Bw
OgorICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisKIDIwMTktMDEtMTUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZWR1Y2Ug
dXNlIG9mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGluIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNDAx
MDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVk
ZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVs
cGVycy5oIgorI2luY2x1ZGUgIlBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAi
V2ViQXBwbGljYXRpb25DYWNoZS5oIgpAQCAtMzEwNiwxMyArMzEwNywxNCBAQCBIUkVTVUxUIFdl
YlZpZXc6OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtCiAKICAgICBtX2luc3BlY3RvckNsaWVudCA9
IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CiAKKyAgICBhdXRvIHN0b3JhZ2VQcm92aWRl
ciA9IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUoKTsKICAgICBQYWdlQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKAogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkVkaXRvckNs
aWVudD4odGhpcyksCiAgICAgICAgIFNvY2tldFByb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAg
bWFrZVVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4oKSwKICAgICAgICAgV2ViQ29yZTo6Q2Fj
aGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNy
ZWF0ZSgpLAotICAgICAgICBDb29raWVKYXI6OmNyZWF0ZSgpCisgICAgICAgIENvb2tpZUphcjo6
Y3JlYXRlKHN0b3JhZ2VQcm92aWRlci5jb3B5UmVmKCkpCiAgICAgKTsKICAgICBjb25maWd1cmF0
aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyk7CiAgICAgY29uZmln
dXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlz
KTsKQEAgLTMxMjgsNiArMzEzMCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6aW5pdFdpdGhGcmFtZShS
RUNUIGZyYW0KICAgICBjb25maWd1cmF0aW9uLnBsdWdpbkluZm9Qcm92aWRlciA9ICZXZWJQbHVn
aW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpOwogCiAgICAgbV9wYWdlID0gbmV3IFBhZ2UoV1RG
TW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgc3RvcmFnZVByb3ZpZGVyLT5zZXRQYWdlKCpwYWdl
KTsKICAgICBwcm92aWRlR2VvbG9jYXRpb25UbyhtX3BhZ2UsICpuZXcgV2ViR2VvbG9jYXRpb25D
bGllbnQodGhpcykpOwogCiAgICAgbV9wYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKHsgRGlkRmly
c3RMYXlvdXQsIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359356</attachid>
            <date>2019-01-16 23:41:32 -0800</date>
            <delta_ts>2019-01-16 23:49:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193529-20190116234131.patch</filename>
            <type>text/plain</type>
            <size>76650</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE93bmVyc2hpcCBvZiB0
aGUgbWFwIHRoYXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBzZWFyY2hl
cyBuZWVkcyB0byBtb3ZlIHRvIHRoZSBXZWJLaXQvV2ViS2l0TGVnYWN5IGxheWVyLAorICAgICAg
ICBzbyB3aGVuIFdlYkNvcmUgdXNlZCB0byBsb29rIGluIHRoaXMgbWFwIGl0IG5lZWRzIHRvIGNh
bGwgYSBjbGllbnQgZnVuY3Rpb24gdG8gYXNrIHRoZSBsYXllciBhYm92ZSBpdCBmb3IgdGhlIHN0
b3JhZ2Ugb2JqZWN0LgorICAgICAgICBJJ3ZlIGNhbGxlZCB0aGlzIGNsaWVudCBTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyOjpzdG9yYWdlU2Vzc2lvbi4gIFJpZ2h0IG5vdyBpdCBqdXN0IGxvb2tzIGlu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24sCisgICAgICAgIGJ1dCB0aGlz
IGFkZGVkIGFic3RyYWN0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1vdmUgdGhlIGN1cnJlbnRs
eSBwcm9jZXNzLWdsb2JhbCBtYXAgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIE5ldHdvcmtQcm9jZXNz
IG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Q29va2llSmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzRW5h
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Nv
Y2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFByb3ZpZGVyOjpjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZURhdGFGb3JIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjp+U3RvcmFnZVNlc3Npb25Qcm92aWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0
cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Z2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSk6CisKIDIwMTktMDEtMTYgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVcGRh
dGUgdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIHRvIGFjdHVhbGx5IHVzZSB2ZXJ0
ZXggYnVmZmVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEyMyw3ICsx
MjQsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMCiAgICAgICAg
IFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQgPSBwYWdlID8gcGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwogICAgICAgICBTdHJpbmcgcGFydGl0aW9uID0gbV9kb2N1bWVudC0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKLSAgICAgICAgbV9oYW5kbGUgPSBtX3NvY2tldFByb3Zp
ZGVyLT5jcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUobV9oYW5kc2hha2UtPnVybCgpLCAqdGhpcywg
c2Vzc2lvbklELCBwYXJ0aXRpb24pOworICAgICAgICBtX2hhbmRsZSA9IG1fc29ja2V0UHJvdmlk
ZXItPmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShtX2hhbmRzaGFrZS0+dXJsKCksICp0aGlzLCBz
ZXNzaW9uSUQsIHBhcnRpdGlvbiwgZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAy
LDYgKzE5MDIsNyBAQAogCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4
dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsgfTsK
IAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QjQxOTFB
RUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzdDODhE
ODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBT
b2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTVDOUVGMkYzMjFGMDYxOTAwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlF
RjJGMjIxRjA2MTcxMDAzQkRDNTYgLyogU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQTFERUM2MUY3MUYx
QzcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTFERUM0MUY3MUU2ODcwMEU3MUJEMyAvKiBIVFRQSGVh
ZGVyRmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1Q0IzN0ZGRjFDNjJEMkExMDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzN0ZGRDFDNjJE
Mjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggKi87IH07CiAJCTVDQkM4REFEMUFB
QTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzhEQUIxQUFBMzAyMjAwRTFD
ODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmggKi87IH07CkBAIC02NDI3LDE3ICs2
NDI4LDE2IEBACiAJCTFDODQwQjlBMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExTTEdhdGhlckVudHJ5
UG9pbnRJdGVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzg0MEI5QjIxRUM0MDA5MDBEMDUwMEQg
LyogV0hMU0xDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMQ2hlY2tlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDOTA0REY5MEJBOUQyQzgwMDgxRTlEMCAv
KiBWZXJzaW9uLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNp
b24ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkU0MjFFRUQx
MkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQ0EwQzJFNTIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xGdW5jdGlvblN0YWdl
Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDOUFFNUNBMjFFRDlERjUwMDY5RDVGMiAvKiBX
SExTTEhpZ2hab21iaWVGaW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xIaWdoWm9t
YmllRmluZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM5QUU1Q0IyMUVE
OURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTEhpZ2hab21iaWVGaW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNB
MEMyREUyMUVFQjVGNDAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNBMEMyRTAyMUVFQjVGNTAwQTExODYwIC8qIFdITFNMUmVjdXJzaW9uQ2hlY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFJlY3Vyc2lvbkNoZWNrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQ0EwQzJFNDIxRUVEMTJBMDBBMTE4NjAgLyogV0hMU0xG
dW5jdGlvblN0YWdlQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEZ1bmN0aW9u
U3RhZ2VDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNBMEMyRTUy
MUVFRDEyQTAwQTExODYwIC8qIFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0EwQzJFQTIxRUVENkY1MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMEMyRUMyMUVFRDZGNjAwQTExODYwIC8qIFdITFNMTGl0
ZXJhbFR5cGVDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTGl0ZXJhbFR5cGVD
aGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUM5QUU1Q0EyMUVEOURG
NTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIgLyogV0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMSGlnaFpvbWJpZUZpbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQ0EwQzJGNDIxRUVEQUQwMDBBMTE4NjAgLyogV0hMU0xMb29wQ2hlY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTExvb3BDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMEMyRjUyMUVFREFEMTAwQTExODYwIC8qIFdITFNMTG9vcENo
ZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xMb29wQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQ0EwQzJGNjIxRUVEQUQyMDBBMTE4NjAgLyogQVNUICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0g
QVNUOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0ExOUUwMzBEQzI1NTk1MDA2NUE5
OTQgLyogRXZlbnRMb29wTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRXZlbnRMb29wTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0Ex
OUUxNTBEQzI1NUNBMDA2NUE5OTQgLyogRXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV2ZW50TG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0FGMzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODkwOCw2ICs4OTA4LDcgQEAKIAkJNUM5Qjg2MEIxQzIxRTNDNjAwMTEw
RjM2IC8qIE5ldHdvcmtMb2FkTWV0cmljcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkTWV0cmljcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM5RUYxNkYxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEdyYW1tYXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFRjE3MDFERkY3MTk5MDBBNDUyRTMgLyogWFBh
dGhHcmFtbWFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQYXRoR3JhbW1h
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJGMjIxRjA2MTcxMDAzQkRD
NTYgLyogU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDQTFERUMyMUY3MUU2ODYwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUEhlYWRlckZpZWxkLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMURFQzQxRjcxRTY4NzAwRTcxQkQzIC8q
IEhUVFBIZWFkZXJGaWVsZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVFRQ
SGVhZGVyRmllbGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkMxQzYy
RDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbmltYXRvck1vY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTcwMzIsNiArMTcwMzMsMTAwIEBACiAJCQl0YWJXaWR0aCA9IDg7
CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTFDQTBDMkY2MjFFRURBRDIwMEExMTg2MCAvKiBB
U1QgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDODQw
QjkwMjFFQzMwRjkwMEQwNTAwRCAvKiBXSExTTEFkZHJlc3NTcGFjZS5oICovLAorCQkJCUMyMUJG
NzI1MjFDRDg5RTIwMDIyNzk3OSAvKiBXSExTTEFycmF5UmVmZXJlbmNlVHlwZS5oICovLAorCQkJ
CUMyMUJGNzA5MjFDRDg5Q0EwMDIyNzk3OSAvKiBXSExTTEFycmF5VHlwZS5oICovLAorCQkJCUMy
MUJGNzMwMjFDRDg5RUQwMDIyNzk3OSAvKiBXSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggKi8s
CisJCQkJQzIxQkY3MEEyMUNEODlDQjAwMjI3OTc5IC8qIFdITFNMQmFzZUZ1bmN0aW9uQXR0cmli
dXRlLmggKi8sCisJCQkJQzIxQkY2RkEyMUNEODlCRTAwMjI3OTc5IC8qIFdITFNMQmFzZVNlbWFu
dGljLmggKi8sCisJCQkJQzIxQkY3MUUyMUNEODlEQzAwMjI3OTc5IC8qIFdITFNMQmxvY2suaCAq
LywKKwkJCQlDMjFCRjZGNjIxQ0Q4OUI3MDAyMjc5NzkgLyogV0hMU0xCb29sZWFuTGl0ZXJhbC5o
ICovLAorCQkJCUMyMUJGNzFBMjFDRDg5RDgwMDIyNzk3OSAvKiBXSExTTEJyZWFrLmggKi8sCisJ
CQkJQzIxMzhBMTMyMURERUNEMzAwRjUxNkJBIC8qIFdITFNMQnVpbHRJblNlbWFudGljLmNwcCAq
LywKKwkJCQlDMjFCRjcyMjIxQ0Q4OURGMDAyMjc5NzkgLyogV0hMU0xCdWlsdEluU2VtYW50aWMu
aCAqLywKKwkJCQlDMjFCRjcxNjIxQ0Q4OUQ1MDAyMjc5NzkgLyogV0hMU0xDYWxsRXhwcmVzc2lv
bi5oICovLAorCQkJCUMyMUJGNzA2MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTENvbW1hRXhwcmVz
c2lvbi5oICovLAorCQkJCUMyMUJGNzMzMjFDRDg5RjAwMDIyNzk3OSAvKiBXSExTTENvbnN0YW50
RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNkY1MjFDRDg5QjUwMDIyNzk3OSAvKiBXSExTTENv
bnRpbnVlLmggKi8sCisJCQkJQzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZl
cmVuY2VFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MTgyMUNEODlENzAwMjI3OTc5IC8qIFdI
TFNMRG90RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNkZCMjFDRDg5QkUwMDIyNzk3OSAvKiBX
SExTTERvV2hpbGVMb29wLmggKi8sCisJCQkJQzIxQkY3MjgyMUNEODlFNTAwMjI3OTc5IC8qIFdI
TFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oICovLAorCQkJCTFDODQwQjdEMjFFQkUw
QjgwMEQwNTAwRCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8sCisJCQkJQzIxQkY3MjAyMUNE
ODlERDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggKi8sCisJCQkJQzIx
QkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXIuaCAqLywKKwkJ
CQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwuaCAqLywKKwkJCQlDMjFCRjcwQzIxQ0Q4OUNDMDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9u
LmggKi8sCisJCQkJQzIxQkY3MDAyMUNEODlDMjAwMjI3OTc5IC8qIFdITFNMRmFsbHRocm91Z2gu
aCAqLywKKwkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAyMjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwu
aCAqLywKKwkJCQkxQ0I2OUIzODIxREYwM0UxMDA2RTg0NkEgLyogV0hMU0xGbG9hdExpdGVyYWxU
eXBlLmNwcCAqLywKKwkJCQkxQ0I2OUIzNDIxREVENjNBMDA2RTg0NkEgLyogV0hMU0xGbG9hdExp
dGVyYWxUeXBlLmggKi8sCisJCQkJQzIxQkY3MzQyMUNEODlGMTAwMjI3OTc5IC8qIFdITFNMRm9y
TG9vcC5oICovLAorCQkJCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9u
QXR0cmlidXRlLmggKi8sCisJCQkJQzIxQkY2RkQyMUNEODlDMDAwMjI3OTc5IC8qIFdITFNMRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oICovLAorCQkJCUMyMUJGNkY0MjFDRDg5QjMwMDIyNzk3OSAvKiBX
SExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oICovLAorCQkJCUMyMUJGNkZGMjFDRDg5QzIwMDIyNzk3
OSAvKiBXSExTTElmU3RhdGVtZW50LmggKi8sCisJCQkJQzIxQkY2RjcyMUNEODlCOTAwMjI3OTc5
IC8qIFdITFNMSW5kZXhFeHByZXNzaW9uLmggKi8sCisJCQkJQzIwRjRGNjYyMURGRjIzNjAwNzBD
NDVBIC8qIFdITFNMSW50ZWdlckxpdGVyYWwuY3BwICovLAorCQkJCUMyMUJGNkY4MjFDRDg5QkIw
MDIyNzk3OSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmggKi8sCisJCQkJMUNCNjlCMzkyMURGMDNG
MzAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcCAqLywKKwkJCQkxQ0I2OUIz
NTIxREVENjQ5MDA2RTg0NkEgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLywKKwkJCQlD
MjFCRjczMjIxQ0Q4OUVGMDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oICovLAor
CQkJCUMyMUJGNzE1MjFDRDg5RDQwMDIyNzk3OSAvKiBXSExTTExvZ2ljYWxOb3RFeHByZXNzaW9u
LmggKi8sCisJCQkJQzIxQkY3MkQyMUNEODlFOTAwMjI3OTc5IC8qIFdITFNMTWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzJDMjFDRDg5RTkwMDIyNzk3OSAvKiBX
SExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oICovLAorCQkJCTFDMzMyNzcxMjFDRjBCRTEwMDBE
QzlGMiAvKiBXSExTTE5hbWVkVHlwZS5oICovLAorCQkJCUMyMUJGNzIzMjFDRDg5RTEwMDIyNzk3
OSAvKiBXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLywKKwkJCQlDMjFCRjcyQTIx
Q0Q4OUU3MDAyMjc5NzkgLyogV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCAqLywKKwkJCQlD
MjFCRjcyNDIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOb2RlLmggKi8sCisJCQkJQzIxQkY3MDcy
MUNEODlDODAwMjI3OTc5IC8qIFdITFNMTnVsbExpdGVyYWwuaCAqLywKKwkJCQkxQ0I2OUIzQTIx
REYwNDAzMDA2RTg0NkEgLyogV0hMU0xOdWxsTGl0ZXJhbFR5cGUuY3BwICovLAorCQkJCTFDQjY5
QjM2MjFERUQ2NTcwMDZFODQ2QSAvKiBXSExTTE51bGxMaXRlcmFsVHlwZS5oICovLAorCQkJCUMy
MUJGNzIxMjFDRDg5REUwMDIyNzk3OSAvKiBXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0
ZS5oICovLAorCQkJCUMyMUJGNzJGMjFDRDg5RUMwMDIyNzk3OSAvKiBXSExTTFBvaW50ZXJUeXBl
LmggKi8sCisJCQkJQzIxQkY3MkUyMUNEODlFQTAwMjI3OTc5IC8qIFdITFNMUHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uLmggKi8sCisJCQkJQzIxQkY3MEIyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNM
UXVhbGlmaWVyLmggKi8sCisJCQkJQzIxQkY3MUIyMUNEODlEOTAwMjI3OTc5IC8qIFdITFNMUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzBEMjFDRDg5Q0QwMDIyNzk3
OSAvKiBXSExTTFJlZmVyZW5jZVR5cGUuaCAqLywKKwkJCQkxQ0I2OUIzMjIxREVENDBCMDA2RTg0
NkEgLyogV0hMU0xSZXNvbHZhYmxlVHlwZS5oICovLAorCQkJCUMyMTM4QTE1MjFEREVDRTkwMEY1
MTZCQSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuY3BwICovLAorCQkJCUMyMUJGNzA4MjFDRDg5
QzkwMDIyNzk3OSAvKiBXSExTTFJlc291cmNlU2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjcwMzIx
Q0Q4OUM1MDAyMjc5NzkgLyogV0hMU0xSZXR1cm4uaCAqLywKKwkJCQlDMjFCRjZGOTIxQ0Q4OUJE
MDAyMjc5NzkgLyogV0hMU0xTZW1hbnRpYy5oICovLAorCQkJCUMyMTM4QTE2MjFEREVDRkIwMEY1
MTZCQSAvKiBXSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAgKi8sCisJCQkJ
QzIxQkY3MzYyMUNEODlGMzAwMjI3OTc5IC8qIFdITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljLmggKi8sCisJCQkJQzIxMzhBMTcyMURERUQwRDAwRjUxNkJBIC8qIFdITFNMU3RhZ2VJ
bk91dFNlbWFudGljLmNwcCAqLywKKwkJCQlDMjFCRjcwRTIxQ0Q4OUNFMDAyMjc5NzkgLyogV0hM
U0xTdGFnZUluT3V0U2VtYW50aWMuaCAqLywKKwkJCQlDMjFCRjcxMjIxQ0Q4OUQxMDAyMjc5Nzkg
LyogV0hMU0xTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcyNzIxQ0Q4OUU0MDAyMjc5NzkgLyog
V0hMU0xTdHJ1Y3R1cmVEZWZpbml0aW9uLmggKi8sCisJCQkJQzIxQkY2RkUyMUNEODlDMTAwMjI3
OTc5IC8qIFdITFNMU3RydWN0dXJlRWxlbWVudC5oICovLAorCQkJCUMyMUJGNzE5MjFDRDg5RDcw
MDIyNzk3OSAvKiBXSExTTFN3aXRjaENhc2UuaCAqLywKKwkJCQlDMjFCRjczMTIxQ0Q4OUVFMDAy
Mjc5NzkgLyogV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCAqLywKKwkJCQlDMjFCRjcxQzIxQ0Q4OURB
MDAyMjc5NzkgLyogV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNkYzMjFD
RDg5QUQwMDIyNzk3OSAvKiBXSExTTFRyYXAuaCAqLywKKwkJCQlDMjFCRjcxRDIxQ0Q4OURCMDAy
Mjc5NzkgLyogV0hMU0xUeXBlLmggKi8sCisJCQkJQzI4OEM3MkQyMUM5OTFEQTAwMkRGNUNBIC8q
IFdITFNMVHlwZUFyZ3VtZW50LmNwcCAqLywKKwkJCQlDMjFCRjcxMTIxQ0Q4OUQxMDAyMjc5Nzkg
LyogV0hMU0xUeXBlQXJndW1lbnQuaCAqLywKKwkJCQlDMjFCRjcyOTIxQ0Q4OUU2MDAyMjc5Nzkg
LyogV0hMU0xUeXBlRGVmaW5pdGlvbi5oICovLAorCQkJCUMyMEY0RjY0MjFERkJFNUMwMDcwQzQ1
QSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuY3BwICovLAorCQkJCUMyMUJGNzFGMjFDRDg5REMwMDIy
Nzk3OSAvKiBXSExTTFR5cGVSZWZlcmVuY2UuaCAqLywKKwkJCQkxQzMzMjc3MjIxQ0YwRDJFMDAw
REM5RjIgLyogV0hMU0xVbm5hbWVkVHlwZS5oICovLAorCQkJCUMyMEY0RjY3MjFERkYzQTcwMDcw
QzQ1QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuY3BwICovLAorCQkJCUMyMUJGNzJC
MjFDRDg5RTgwMDIyNzk3OSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWwuaCAqLywKKwkJ
CQkxQ0I2OUIzQjIxREYwNDFFMDA2RTg0NkEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZS5jcHAgKi8sCisJCQkJMUNCNjlCMzcyMURFRDY2QjAwNkU4NDZBIC8qIFdITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaCAqLywKKwkJCQlDMjFCRjZGQzIxQ0Q4OUJGMDAyMjc5Nzkg
LyogV0hMU0xWYWx1ZS5oICovLAorCQkJCUMyMUJGNzEwMjFDRDg5RDAwMDIyNzk3OSAvKiBXSExT
TFZhcmlhYmxlRGVjbGFyYXRpb24uaCAqLywKKwkJCQlDMjFCRjcxNDIxQ0Q4OUQzMDAyMjc5Nzkg
LyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oICovLAorCQkJCUMyMUJGNzEz
MjFDRDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmggKi8sCisJCQkJQzIx
QkY3MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdITFNMV2hpbGVMb29wLmggKi8sCisJCQkpOworCQkJ
cGF0aCA9IEFTVDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTFDREQ0NDY2
MEJBOUM4MDAwMEY5MDE0NyAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xOTkzNSw2ICsyMDAzMCw3IEBACiAJCQkJNTEwRDRB
MzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oICovLAogCQkJCTUxMEQ0
QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLywKIAkJ
CQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAg
Ki8sCisJCQkJNUM5RUYyRjIyMUYwNjE3MTAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIuaCAqLywKIAkJCQk0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCAqLywKIAkJCQlFMTgwODExMDE2RkNGNDJFMDBCODBEMDcgLyogU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUUxODA4MTE1MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBT
eW5jaHJvbm91c0xvYWRlckNsaWVudC5oICovLApAQCAtMjU1MDgsMTAwICsyNTYwNCw2IEBACiAJ
CQlwYXRoID0gV0hMU0w7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQkxQ0Ew
QzJGNjIxRUVEQUQyMDBBMTE4NjAgLyogQVNUICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQkxQzg0MEI5MDIxRUMzMEY5MDBEMDUwMEQgLyogV0hMU0xBZGRy
ZXNzU3BhY2UuaCAqLywKLQkJCQlDMjFCRjcyNTIxQ0Q4OUUyMDAyMjc5NzkgLyogV0hMU0xBcnJh
eVJlZmVyZW5jZVR5cGUuaCAqLywKLQkJCQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hM
U0xBcnJheVR5cGUuaCAqLywKLQkJCQlDMjFCRjczMDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xB
c3NpZ25tZW50RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzBBMjFDRDg5Q0IwMDIyNzk3OSAv
KiBXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJCUMyMUJGNkZBMjFDRDg5QkUw
MDIyNzk3OSAvKiBXSExTTEJhc2VTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzFFMjFDRDg5REMw
MDIyNzk3OSAvKiBXSExTTEJsb2NrLmggKi8sCi0JCQkJQzIxQkY2RjYyMUNEODlCNzAwMjI3OTc5
IC8qIFdITFNMQm9vbGVhbkxpdGVyYWwuaCAqLywKLQkJCQlDMjFCRjcxQTIxQ0Q4OUQ4MDAyMjc5
NzkgLyogV0hMU0xCcmVhay5oICovLAotCQkJCUMyMTM4QTEzMjFEREVDRDMwMEY1MTZCQSAvKiBX
SExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MjIyMUNEODlERjAwMjI3OTc5
IC8qIFdITFNMQnVpbHRJblNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MTYyMUNEODlENTAwMjI3
OTc5IC8qIFdITFNMQ2FsbEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwNjIxQ0Q4OUM3MDAy
Mjc5NzkgLyogV0hMU0xDb21tYUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjczMzIxQ0Q4OUYw
MDAyMjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjZGNTIx
Q0Q4OUI1MDAyMjc5NzkgLyogV0hMU0xDb250aW51ZS5oICovLAotCQkJCUMyMUJGNzAxMjFDRDg5
QzQwMDIyNzk3OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJG
NzE4MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFC
RjZGQjIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xEb1doaWxlTG9vcC5oICovLAotCQkJCUMyMUJG
NzI4MjFDRDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQu
aCAqLywKLQkJCQkxQzg0MEI3RDIxRUJFMEI4MDBEMDUwMEQgLyogV0hMU0xFbnRyeVBvaW50VHlw
ZS5oICovLAotCQkJCUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9u
RGVmaW5pdGlvbi5oICovLAotCQkJCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExTTEVu
dW1lcmF0aW9uTWVtYmVyLmggKi8sCi0JCQkJQzIxQkY3MDIyMUNEODlDNDAwMjI3OTc5IC8qIFdI
TFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggKi8sCi0JCQkJQzIxQkY3MEMyMUNEODlDQzAw
MjI3OTc5IC8qIFdITFNMRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzAwMjFDRDg5QzIwMDIy
Nzk3OSAvKiBXSExTTEZhbGx0aHJvdWdoLmggKi8sCi0JCQkJQzIxQkY3MzUyMUNEODlGMjAwMjI3
OTc5IC8qIFdITFNMRmxvYXRMaXRlcmFsLmggKi8sCi0JCQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4
NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgKi8sCi0JCQkJMUNCNjlCMzQyMURFRDYz
QTAwNkU4NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5oICovLAotCQkJCUMyMUJGNzM0MjFD
RDg5RjEwMDIyNzk3OSAvKiBXSExTTEZvckxvb3AuaCAqLywKLQkJCQlDMjFCRjcwNTIxQ0Q4OUM3
MDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJCUMyMUJGNkZEMjFD
RDg5QzAwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLywKLQkJCQlDMjFC
RjZGNDIxQ0Q4OUIzMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLywKLQkJ
CQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0YXRlbWVudC5oICovLAotCQkJ
CUMyMUJGNkY3MjFDRDg5QjkwMDIyNzk3OSAvKiBXSExTTEluZGV4RXhwcmVzc2lvbi5oICovLAot
CQkJCUMyMEY0RjY2MjFERkYyMzYwMDcwQzQ1QSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmNwcCAq
LywKLQkJCQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5o
ICovLAotCQkJCTFDQjY5QjM5MjFERjAzRjMwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFs
VHlwZS5jcHAgKi8sCi0JCQkJMUNCNjlCMzUyMURFRDY0OTAwNkU4NDZBIC8qIFdITFNMSW50ZWdl
ckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIxQkY3MzIyMUNEODlFRjAwMjI3OTc5IC8qIFdITFNM
TG9naWNhbEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyog
V0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzJEMjFDRDg5RTkwMDIy
Nzk3OSAvKiBXSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFC
RjcyQzIxQ0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCAqLywK
LQkJCQkxQzMzMjc3MTIxQ0YwQkUxMDAwREM5RjIgLyogV0hMU0xOYW1lZFR5cGUuaCAqLywKLQkJ
CQlDMjFCRjcyMzIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLmggKi8sCi0JCQkJQzIxQkY3MkEyMUNEODlFNzAwMjI3OTc5IC8qIFdITFNMTmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3MjQyMUNEODlFMTAwMjI3OTc5IC8qIFdITFNM
Tm9kZS5oICovLAotCQkJCUMyMUJGNzA3MjFDRDg5QzgwMDIyNzk3OSAvKiBXSExTTE51bGxMaXRl
cmFsLmggKi8sCi0JCQkJMUNCNjlCM0EyMURGMDQwMzAwNkU4NDZBIC8qIFdITFNMTnVsbExpdGVy
YWxUeXBlLmNwcCAqLywKLQkJCQkxQ0I2OUIzNjIxREVENjU3MDA2RTg0NkEgLyogV0hMU0xOdWxs
TGl0ZXJhbFR5cGUuaCAqLywKLQkJCQlDMjFCRjcyMTIxQ0Q4OURFMDAyMjc5NzkgLyogV0hMU0xO
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywKLQkJCQlDMjFCRjcyRjIxQ0Q4OUVDMDAy
Mjc5NzkgLyogV0hMU0xQb2ludGVyVHlwZS5oICovLAotCQkJCUMyMUJGNzJFMjFDRDg5RUEwMDIy
Nzk3OSAvKiBXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzBC
MjFDRDg5Q0MwMDIyNzk3OSAvKiBXSExTTFF1YWxpZmllci5oICovLAotCQkJCUMyMUJGNzFCMjFD
RDg5RDkwMDIyNzk3OSAvKiBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCAqLywKLQkJ
CQlDMjFCRjcwRDIxQ0Q4OUNEMDAyMjc5NzkgLyogV0hMU0xSZWZlcmVuY2VUeXBlLmggKi8sCi0J
CQkJMUNCNjlCMzIyMURFRDQwQjAwNkU4NDZBIC8qIFdITFNMUmVzb2x2YWJsZVR5cGUuaCAqLywK
LQkJCQlDMjEzOEExNTIxRERFQ0U5MDBGNTE2QkEgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmNw
cCAqLywKLQkJCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFu
dGljLmggKi8sCi0JCQkJQzIxQkY3MDMyMUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmgg
Ki8sCi0JCQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLywK
LQkJCQlDMjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMuY3BwICovLAotCQkJCUMyMUJGNzM2MjFDRDg5RjMwMDIyNzk3OSAvKiBXSExT
TFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oICovLAotCQkJCUMyMTM4QTE3MjFEREVE
MEQwMEY1MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3
MEUyMUNEODlDRTAwMjI3OTc5IC8qIFdITFNMU3RhZ2VJbk91dFNlbWFudGljLmggKi8sCi0JCQkJ
QzIxQkY3MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMU3RhdGVtZW50LmggKi8sCi0JCQkJQzIx
QkY3MjcyMUNEODlFNDAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oICovLAot
CQkJCUMyMUJGNkZFMjFDRDg5QzEwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCAq
LywKLQkJCQlDMjFCRjcxOTIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xTd2l0Y2hDYXNlLmggKi8s
Ci0JCQkJQzIxQkY3MzEyMUNEODlFRTAwMjI3OTc5IC8qIFdITFNMU3dpdGNoU3RhdGVtZW50Lmgg
Ki8sCi0JCQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdITFNMVGVybmFyeUV4cHJlc3Np
b24uaCAqLywKLQkJCQlDMjFCRjZGMzIxQ0Q4OUFEMDAyMjc5NzkgLyogV0hMU0xUcmFwLmggKi8s
Ci0JCQkJQzIxQkY3MUQyMUNEODlEQjAwMjI3OTc5IC8qIFdITFNMVHlwZS5oICovLAotCQkJCUMy
ODhDNzJEMjFDOTkxREEwMDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8sCi0JCQkJ
QzIxQkY3MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8sCi0JCQkJ
QzIxQkY3MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdITFNMVHlwZURlZmluaXRpb24uaCAqLywKLQkJ
CQlDMjBGNEY2NDIxREZCRTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLywK
LQkJCQlDMjFCRjcxRjIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmggKi8s
Ci0JCQkJMUMzMzI3NzIyMUNGMEQyRTAwMERDOUYyIC8qIFdITFNMVW5uYW1lZFR5cGUuaCAqLywK
LQkJCQlDMjBGNEY2NzIxREZGM0E3MDA3MEM0NUEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsLmNwcCAqLywKLQkJCQlDMjFCRjcyQjIxQ0Q4OUU4MDAyMjc5NzkgLyogV0hMU0xVbnNpZ25l
ZEludGVnZXJMaXRlcmFsLmggKi8sCi0JCQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdI
TFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFDQjY5QjM3MjFERUQ2
NkIwMDZFODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJ
QzIxQkY2RkMyMUNEODlCRjAwMjI3OTc5IC8qIFdITFNMVmFsdWUuaCAqLywKLQkJCQlDMjFCRjcx
MDIxQ0Q4OUQwMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8sCi0JCQkJ
QzIxQkY3MTQyMUNEODlEMzAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQuaCAqLywKLQkJCQlDMjFCRjcxMzIxQ0Q4OUQyMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJs
ZVJlZmVyZW5jZS5oICovLAotCQkJCUMyMUJGNzA0MjFDRDg5QzYwMDIyNzk3OSAvKiBXSExTTFdo
aWxlTG9vcC5oICovLAotCQkJKTsKLQkJCXBhdGggPSBBU1Q7Ci0JCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwotCQl9OwogCQlDOTZGNUVCRjFCNTg3MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9u
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTMxNTQwLDYg
KzMxNTQyLDcgQEAKIAkJCQk1MUUwQkIzODBEQTVBQ0I2MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzUwRDBFODMwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VO
YW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMzc2MzZDMUEyRTY4QkIwMDlBN0VFMiAv
KiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDOUVGMkYz
MjFGMDYxOTAwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTY2RDNDRDFFOEVENDhGMDBBRDYyRTMgLyogU3RvcmFnZVR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFs
c1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDMzIC8q
IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDM0LDYgKzMy
NDM3LDcgQEAKIAkJCQlTcGFuaXNoLAogCQkJCUR1dGNoLAogCQkJCUl0YWxpYW4sCisJCQkJZW4s
CiAJCQkpOwogCQkJbWFpbkdyb3VwID0gMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYkNv
cmUgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyog
UHJvZHVjdHMgKi87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAkocmV2aXNp
b24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDEwICszNiwxNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5jbHVkZSAiU2FtZVNpdGVJ
bmZvLmgiCisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUgPHd0
Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUmVmPENvb2tpZUph
cj4gQ29va2llSmFyOjpjcmVhdGUoUmVmPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+JiYgc3RvcmFn
ZVNlc3Npb25Qcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVKYXIo
V1RGTW92ZShzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKSkpOworfQorCiBJbmNsdWRlU2VjdXJlQ29v
a2llcyBDb29raWVKYXI6OnNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuICh1cmwucHJvdG9jb2xJ
cygiaHR0cHMiKSAmJiAhZG9jdW1lbnQuZm91bmRNaXhlZENvbnRlbnQoKS5jb250YWlucyhTZWN1
cml0eUNvbnRleHQ6Ok1peGVkQ29udGVudFR5cGU6OkFjdGl2ZSkpID8gSW5jbHVkZVNlY3VyZUNv
b2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObzsKQEAgLTUyLDkgKzU4LDkgQEAg
U2FtZVNpdGVJbmZvIENvb2tpZUphcjo6c2FtZVNpdGVJbmZvKGNvbgogICAgIHJldHVybiB7IH07
CiB9CiAKLVJlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRlKCkKK0Nvb2tpZUphcjo6Q29v
a2llSmFyKFJlZjxTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIpCisgICAgOiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIoV1RGTW92ZShzdG9yYWdlU2Vzc2lv
blByb3ZpZGVyKSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29raWVKYXIpOwogfQog
CiBDb29raWVKYXI6On5Db29raWVKYXIoKSA9IGRlZmF1bHQ7CkBAIC03Myw3ICs3OSw3IEBAIFN0
cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQmIGRvY3UKICAgICB9CiAKICAgICBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQ7Ci0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFn
ZVNlc3Npb24oKSkKICAgICAgICAgcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llc0ZvckRPTShkb2N1
bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgIGVsc2UKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMTAsMjQgKzExNiwyNCBAQCB2b2lkIENvb2tp
ZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jCiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byogc2Vzc2lv
biA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZG9jdW1lbnQuc2Vzc2lv
bklEKCkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LT5zdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICBzZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKICAgICBlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAorYm9vbCBDb29raWVKYXI6OmNvb2tpZXNF
bmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3QKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZG9jdW1lbnQuc2Vzc2lvbklE
KCkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5z
dG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Y29va2llc0VuYWJsZWQo
KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
c3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUph
cjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdAogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0
b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogICAgICAgICByZXR1cm4geyByZXN1bHQuZmlyc3QsIHJl
c3VsdC5zZWNvbmQgPyBTZWN1cmVDb29raWVzQWNjZXNzZWQ6OlllcyA6IFNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZDo6Tm8gfTsKICAgICB9CkBAIC0xNjAsMTYgKzE2NiwxNiBAQCBib29sIENvb2tpZUph
cjo6Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2Fk
ZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZG9jdW1lbnQuc2Vzc2lvbklE
KCkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5z
dG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llcyk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ29va2llSmFyOjpkZWxldGVDb29raWUo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lKQordm9pZCBDb29raWVKYXI6OmRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKGRvY3Vt
ZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Np
b25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgc2Vzc2lvbi0+ZGVsZXRlQ29v
a2llKHVybCwgY29va2llTmFtZSk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgJKHJldmlzaW9uIDI0MDEwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFBBTCB7CkBAIC00MCwxMSArNDEsMTMgQEAgZW51bSBjbGFzcyBTZWN1
cmVDb29raWVzQWNjZXNzZWQgOiBib29sIAogY2xhc3MgRG9jdW1lbnQ7CiBzdHJ1Y3QgQ29va2ll
Owogc3RydWN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5OworY2xhc3MgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOworY2xhc3MgU3RvcmFnZVNlc3Npb25Qcm92aWRlcjsKIHN0cnVjdCBTYW1l
U2l0ZUluZm87CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIENvb2tpZUphciA6IHB1YmxpYyBSZWZD
b3VudGVkPENvb2tpZUphcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29va2llSmFyPiBj
cmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPENvb2tpZUphcj4gY3JlYXRlKFJlZjxTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyPiYmKTsKICAgICAKICAgICBzdGF0aWMgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkUHJveHkgY29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29uc3QgRG9jdW1lbnQmLCBj
b25zdCBVUkwmKTsKIApAQCAtNjMsNiArNjYsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IHN0YXRpYyBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvKGNvbnN0IERvY3VtZW50Jik7CiAgICAg
c3RhdGljIEluY2x1ZGVTZWN1cmVDb29raWVzIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGNv
bnN0IERvY3VtZW50JiwgY29uc3QgVVJMJik7CisgICAgQ29va2llSmFyKFJlZjxTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyPiYmKTsKKworcHJpdmF0ZToKKyAgICBSZWY8U3RvcmFnZVNlc3Npb25Qcm92
aWRlcj4gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9u
IDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MzUsNiArNTM1LDEwIEBAIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBFbXB0
eVN0b3JhZ2VOYW1lc3AKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VOYW1l
c3BhY2UpOwogfQogCitjbGFzcyBFbXB0eVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMg
U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9y
YWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK307CisKIFBhZ2VD
b25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpCiB7CiAgICAg
UGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb24gewpAQCAtNTQzLDcgKzU0Nyw3IEBA
IFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEUKICAgICAgICAgTGliV2Vi
UlRDUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3Jl
YXRlKCksCiAgICAgICAgIGFkb3B0UmVmKCpuZXcgRW1wdHlCYWNrRm9yd2FyZENsaWVudCksCi0g
ICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKCkKKyAgICAgICAgQ29va2llSmFyOjpjcmVhdGUoYWRv
cHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpKQogICAgIH07CiAKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlDaHJvbWVDbGllbnQ+IGR1bW15Q2hyb21lQ2xpZW50
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xNjYsNyArMTY3LDcgQEAg
ZW51bSBjbGFzcyBEaWRXcmFwIDogYm9vbDsKIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5
IDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogYm9v
bDsKIAotY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPiB7CitjbGFzcyBQ
YWdlIDogcHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
UGFnZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nc0Jhc2U7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVmPFNvY2tldFN0cmVh
bUhhbmRsZT4gU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBV
UkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uKQorUmVmPFNvY2tl
dFN0cmVhbUhhbmRsZT4gU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShj
b25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBjb25z
dCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKiBwcm92aWRlcikKIHsKLSAgICByZXR1cm4gU29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKHVybCwgY2xpZW50LCBzZXNzaW9uSUQsIGNyZWRlbnRp
YWxQYXJ0aXRpb24sIHsgfSk7CisgICAgcmV0dXJuIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNy
ZWF0ZSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCB7IH0sIHBy
b3ZpZGVyKTsKIH0KICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJv
dmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVy
LmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOwogY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50OwpAQCAtMzgsNyArMzksNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQ7CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb2NrZXRQcm92aWRlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTb2NrZXRQcm92aWRlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8U29ja2V0UHJvdmlkZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0
UHJvdmlkZXIpOyB9Ci0gICAgdmlydHVhbCBSZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVT
b2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jiwg
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbik7CisgICAg
dmlydHVhbCBSZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUo
Y29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92
aWRlciopOwogICAgIHZpcnR1YWwgflNvY2tldFByb3ZpZGVyKCkgeyB9OwogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRl
eHQuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiAKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8
TmV0d29ya2luZ0NvbnRleHQ+IHsKK2NsYXNzIE5ldHdvcmtpbmdDb250ZXh0IDogcHVibGljIFN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk5ldHdvcmtpbmdD
b250ZXh0KCkgPSBkZWZhdWx0OwogCkBAIC01OCw4ICs1OCw2IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7IH0KIAotICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0ID0gMDsKLQogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNv
bnN0ID0gMDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwCShyZXZpc2lvbiAyNDAx
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw5ICs3Niw4IEBAIHN0YXRpYyBzaXplX3Qg
cmVtb3ZlVGVybWluYXRpb25DaGFyYWN0ZXIKICAgICByZXR1cm4gZGF0YUxlbmd0aCAtIDI7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPj4gY29v
a2llRGF0YUZvckhhbmRzaGFrZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYg
aGVhZGVyRmllbGRQcm94eSkKK3N0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8VmVjdG9yPHVpbnQ4
X3Q+LCBib29sPj4gY29va2llRGF0YUZvckhhbmRzaGFrZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkUHJveHkmIGhlYWRlckZpZWxkUHJveHkpCiB7Ci0gICAgYXV0byBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKGhlYWRlckZpZWxk
UHJveHkuc2Vzc2lvbklEKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKQEAgLTEwMyw3ICsxMDIsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuCiAgICAgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQgPSBmYWxzZTsKIAogICAgIGlmIChoZWFkZXJGaWVsZFByb3h5KSB7Ci0gICAgICAg
IGF1dG8gY29va2llRGF0YUZyb21OZXR3b3JrU2Vzc2lvbiA9IGNvb2tpZURhdGFGb3JIYW5kc2hh
a2UoaGVhZGVyRmllbGRQcm94eS52YWx1ZSgpKTsKKyAgICAgICAgYXV0byBjb29raWVEYXRhRnJv
bU5ldHdvcmtTZXNzaW9uID0gY29va2llRGF0YUZvckhhbmRzaGFrZShtX3N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIgPyBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkgOiBu
dWxscHRyLCAqaGVhZGVyRmllbGRQcm94eSk7CiAgICAgICAgIGlmICghY29va2llRGF0YUZyb21O
ZXR3b3JrU2Vzc2lvbikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UsIGZh
bHNlKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmFnZVNlc3Npb25Q
cm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFBBTCB7CitjbGFzcyBT
ZXNzaW9uSUQ7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOworCitjbGFzcyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIH5TdG9yYWdlU2Vzc2lvblByb3ZpZGVyKCkgeyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24g
MjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxMyBAQCB0eXBlZGVm
IHN0cnVjdCBfX0NGSFRUUE1lc3NhZ2UqIENGSFRUUE1lCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOwogY2xhc3Mg
UHJvdGVjdGlvblNwYWNlOwogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFz
cyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsIDogcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNl
QXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNvY2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQsIHNlc3Npb25JRCwgY3JlZGVudGlh
bFBhcnRpdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFNvY2tl
dFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBjcmVkZW50aWFsUGFydGl0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRp
dERhdGEsIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqIHByb3ZpZGVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQsIHNlc3Npb25J
RCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpLCBwcm92aWRlcikpOyB9
CiAKICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsKCk7CiAKQEAgLTU4LDcgKzU5
LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFs
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNy
ZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRp
YWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmLCBjb25zdCBTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKik7CiAgICAgdm9pZCBjcmVhdGVTdHJlYW1zKCk7CiAgICAgdm9pZCBz
Y2hlZHVsZVN0cmVhbXMoKTsKICAgICB2b2lkIGNob29zZVByb3h5KCk7CkBAIC0xMDMsNiArMTA0
LDcgQEAgcHJpdmF0ZToKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBTdHJp
bmcgbV9jcmVkZW50aWFsUGFydGl0aW9uOwogICAgIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tl
biBtX2F1ZGl0RGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlcj4g
bV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyOwogCiAgICAgU3RyZWFtQnVmZmVyPHVpbnQ4X3QsIDEw
MjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4QnVmZmVy
U2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaCIKKyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGTmV0d29yay5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgpAQCAtOTUsNyArOTYsNyBAQCBzdGF0aWMgaW5saW5lIGF1dG8gY2FsbGJh
Y2tzUnVuTG9vcE1vZGUoCiAjZW5kaWYKIH0KIAotU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVk
ZW50aWFsUGFydGl0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEp
CitTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVS
TCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRl
ciogcHJvdmlkZXIpCiAgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpCiAgICAg
LCBtX2Nvbm5lY3RpbmdTdWJzdGF0ZShOZXcpCiAgICAgLCBtX2Nvbm5lY3Rpb25UeXBlKFVua25v
d24pCkBAIC0xMDMsNiArMTA0LDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0U3Ry
ZWFtSGFuZAogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9jcmVkZW50aWFs
UGFydGl0aW9uKGNyZWRlbnRpYWxQYXJ0aXRpb24pCiAgICAgLCBtX2F1ZGl0RGF0YShXVEZNb3Zl
KGF1ZGl0RGF0YSkpCisgICAgLCBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIocHJvdmlkZXIpCiB7
CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIs
IHRoaXMsICZtX2NsaWVudCk7CiAKQEAgLTM2Nyw3ICszNjksNyBAQCBib29sIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmdldFN0b3JlZENPCiAKICAgICAvLyBUcnkgc3lzdGVtIGNyZWRlbnRpYWwg
c3RvcmFnZSBmaXJzdCwgbWF0Y2hpbmcgSFRUUCBiZWhhdmlvciAoQ0ZOZXR3b3JrIG9ubHkgYXNr
cyB0aGUgY2xpZW50IGZvciBwYXNzd29yZCBpZiBpdCBjb3VsZG4ndCBmaW5kIGl0IGluIEtleWNo
YWluKS4KICAgICBDcmVkZW50aWFsIHN0b3JlZENyZWRlbnRpYWw7Ci0gICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihtX3Nl
c3Npb25JRCkpIHsKKyAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX3N0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIgPyBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkg
OiBudWxscHRyKSB7CiAgICAgICAgIHN0b3JlZENyZWRlbnRpYWwgPSBzdG9yYWdlU2Vzc2lvbi0+
Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UocHJvdGVjdGlvblNw
YWNlKTsKICAgICAgICAgaWYgKHN0b3JlZENyZWRlbnRpYWwuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgc3RvcmVkQ3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgp
LmdldChtX2NyZWRlbnRpYWxQYXJ0aXRpb24sIHByb3RlY3Rpb25TcGFjZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDEwICs0NCwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CitjbGFzcyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOwog
CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsIDogcHVibGljIFNvY2tldFN0cmVhbUhhbmRs
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVh
dGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVu
dCkpOyB9CisgICAgc3RhdGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYsIGNvbnN0
IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNvY2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQsIHByb3ZpZGVyKSk7IH0KIAogICAg
IHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUltcGwoKTsKIApAQCAtNTYsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgZmluYWw7CiAK
IHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25z
dCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCYsIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKIAogICAgIHNpemVfdCBidWZmZXJl
ZEFtb3VudCgpIGZpbmFsOwogICAgIE9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kSW50ZXJu
YWwoY29uc3QgdWludDhfdCosIHNpemVfdCk7CkBAIC02OSw2ICs3MCw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBrV3JpdGVCdWZmZXJTaXplID0gNCAqIDEwMjQ7CiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBrUmVhZEJ1ZmZlclNpemUgPSA0ICogMTAyNDsKIAorICAgIFJl
ZlB0cjxTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiAg
ICAgUmVmUHRyPFRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CiAgICAgc3RkOjphdG9taWM8Ym9vbD4g
bV9ydW5uaW5nIHsgdHJ1ZSB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q3VybC5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDggKzQ2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tl
dFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCYgY2xpZW50LCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKiBwcm92aWRlcikKICAgICA6IFNvY2tl
dFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkKKyAgICAsIG1fc3RvcmFnZVNlc3Npb25Qcm92aWRl
cihwcm92aWRlcikKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBu
ZXcgY2xpZW50ICVwIiwgdGhpcywgJm1fY2xpZW50KTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCShyZXZpc2lvbiAyNDAxMDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAorCiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTEsNyAr
NTIsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CiAKIGNsYXNzIFNvY2tldFN0
cmVhbUhhbmRsZUltcGwgZmluYWwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0ZShjb25zdCBV
UkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0YXRpYyBSZWY8U29j
a2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlv
bkF1ZGl0VG9rZW4mJiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogICAgIHZpcnR1
YWwgflNvY2tldFN0cmVhbUhhbmRsZUltcGwoKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmw7IH0KQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cGxhdGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IGNvbnN0IE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYsIEZ1bmN0aW9u
PHZvaWQoYm9vbCwgYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgcGxhdGZvcm1DbG9zZSgpIGZp
bmFsOwogcHJpdmF0ZToKLSAgICBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCYpOworICAgIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29u
c3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgY29uc3QgU3RvcmFnZVNlc3Npb25Q
cm92aWRlciopOwogCiAgICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkgZmluYWw7CiAgICAgT3B0
aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKQEAgLTc4LDYgKzc5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWwoU29ja2V0U3Ry
ZWFtRXJyb3ImJik7CiAgICAgdm9pZCB3cml0ZVJlYWR5KCk7CiAKKyAgICBSZWZQdHI8U3RvcmFn
ZVNlc3Npb25Qcm92aWRlcj4gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyOworICAgIAogICAgIEdS
ZWZQdHI8R0lPU3RyZWFtPiBtX3N0cmVhbTsKICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gbV9p
bnB1dFN0cmVhbTsKICAgICBHUmVmUHRyPEdQb2xsYWJsZU91dHB1dFN0cmVhbT4gbV9vdXRwdXRT
dHJlYW07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAJKHJldmlz
aW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBA
CisKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcyBM
dGQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU29j
a2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIK
ICNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiVVJMU291cC5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4K
ICNpbmNsdWRlIDxnbGliLmg+CkBAIC04MSwxMiArODMsMTIgQEAgc3RhdGljIHZvaWQgc29ja2V0
Q2xpZW50RXZlbnRDYWxsYmFjayhHUwogfQogI2VuZGlmCiAKLVJlZjxTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsPiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYsIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKQorUmVmPFNvY2tl
dFN0cmVhbUhhbmRsZUltcGw+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZShjb25zdCBV
UkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYs
IGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCiB7
Ci0gICAgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IHNvY2tldCA9IGFkb3B0UmVmKCpuZXcg
U29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCkpOworICAgIFJlZjxTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsPiBzb2NrZXQgPSBhZG9wdFJlZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZUlt
cGwodXJsLCBjbGllbnQsIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpKTsKIAogI2lmIFNPVVBfQ0hF
Q0tfVkVSU0lPTigyLCA2MSwgOTApCi0gICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgPyBzdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpIDogbnVsbHB0cjsKICAgICBpZiAo
IW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIHNvY2tldDsKIApAQCAtMTEx
LDggKzExMyw5IEBAIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBTb2NrZXRTdHJlYW0KICAg
ICByZXR1cm4gc29ja2V0OwogfQogCi1Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNs
aWVudCkKK1NvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBjb25zdCBTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKiBwcm92aWRlcikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1
cmwsIGNsaWVudCkKKyAgICAsIG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlcihwcm92aWRlcikKICAg
ICAsIG1fY2FuY2VsbGFibGUoYWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpKQogewogICAg
IExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlz
LCAmbV9jbGllbnQpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMDEt
MTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24gaW4gV2Vi
Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
NTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRTdHJl
YW0pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTb2NrZXRTdHJlYW06Ok5ldHdvcmtTb2NrZXRTdHJlYW0pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRQcm92aWRl
cjo6Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpXZWJDb29raWVK
YXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaDoKKwogMjAx
OS0wMS0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IGEgbmV3IFNQSSBmb3IgY29udHJvbGxpbmcgZ2V0VXNlck1lZGlhCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdG9rZW4gPSB7IG1fbmV0d29ya1Byb2Nl
c3MtPnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgfTsKICNlbmRpZgotICAgIG1fbmV0d29y
a1NvY2tldFN0cmVhbXMuc2V0KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0
ZShXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIsIG1f
Y29ubmVjdGlvbiwgV1RGTW92ZSh0b2tlbikpKTsKKyAgICBtX25ldHdvcmtTb2NrZXRTdHJlYW1z
LnNldChpZGVudGlmaWVyLCBOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUobV9uZXR3b3JrUHJv
Y2Vzcy5nZXQoKSwgV1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQsIGNhY2hlUGFydGl0aW9uLCBpZGVu
dGlmaWVyLCBtX2Nvbm5lY3Rpb24sIFdURk1vdmUodG9rZW4pKSk7CiB9CiAKIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlc3Ryb3lTb2NrZXRTdHJlYW0odWludDY0X3QgaWRl
bnRpZmllcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBuYW1l
c3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIENhY2hlOwogfQogCi1jbGFzcyBOZXR3b3JrUHJv
Y2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGll
bnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzcz4KK2NsYXNzIE5l
dHdvcmtQcm9jZXNzIDogcHVibGljIENoaWxkUHJvY2VzcywgcHJpdmF0ZSBEb3dubG9hZE1hbmFn
ZXI6OkNsaWVudCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE5ldHdvcmtQcm9jZXNzPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtQcm9jZXNzPgogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogICAgICwgcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFja2luZ1N0
b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCShyZXZpc2lvbiAy
NDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJl
YW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTmV0d29y
a1NvY2tldFN0cmVhbS5oIgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3Ry
ZWFtTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFByb3h5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1FcnJvci5oPgpAQCAtMzQs
MTUgKzM1LDE1IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRl
KFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRl
bnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQorUmVmPE5l
dHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIs
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2Vu
JiYgYXVkaXREYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTb2NrZXRT
dHJlYW0oV1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGlkZW50
aWZpZXIsIGNvbm5lY3Rpb24sIFdURk1vdmUoYXVkaXREYXRhKSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5ldHdvcmtTb2NrZXRTdHJlYW0obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUodXJs
KSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0aW9u
LCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KIAotTmV0d29ya1NvY2tldFN0cmVhbTo6TmV0d29y
a1NvY2tldFN0cmVhbShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0
RGF0YSkKK05ldHdvcmtTb2NrZXRTdHJlYW06Ok5ldHdvcmtTb2NrZXRTdHJlYW0oTmV0d29ya1By
b2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVy
LCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tl
biYmIGF1ZGl0RGF0YSkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9j
b25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2ltcGwoU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Y3JlYXRlKHVybCwgKnRoaXMsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgV1RG
TW92ZShhdWRpdERhdGEpKSkKKyAgICAsIG1faW1wbChTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpj
cmVhdGUodXJsLCAqdGhpcywgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3Zl
KGF1ZGl0RGF0YSksIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUobmV0d29y
a1Byb2Nlc3MsIHNlc3Npb25JRCkucHRyKCkpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAkocmV2aXNpb24g
MjQwMTA0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDExIEBAIGNsYXNzIERhdGFSZWZlcmVu
Y2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBOZXR3b3JrUHJvY2VzczsKKwogY2xh
c3MgTmV0d29ya1NvY2tldFN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRT
dHJlYW0+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwg
SVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYp
OworICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gY3JlYXRlKE5ldHdvcmtQcm9j
ZXNzJiwgVVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0
aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNh
dGlvbkF1ZGl0VG9rZW4mJik7CiAgICAgfk5ldHdvcmtTb2NrZXRTdHJlYW0oKTsKIAogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBA
IC02Miw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgZmluYWw7CiAKLSAgICBOZXR3b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBD
OjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwor
ICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0oTmV0d29ya1Byb2Nlc3MmLCBVUkwmJiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6
Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKIAog
ICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBJUEM6OkNvbm5lY3Rpb24mIG1fY29ubmVj
dGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+
IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IFBBTDo6U2Vzc2lv
bklEJiBzZXNzaW9uSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIobmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCkpOyB9CisgICAgCitwcml2YXRl
OgorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKKyAgICAgICAgOiBt
X25ldHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdvcmtQcm9jZXNzKSkKKyAgICAgICAgLCBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpIHsgfQorCisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAo
bV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgV2Vha1B0cjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3Jr
UHJvY2VzczsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKK307CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQ0NSw2ICszNDQ1LDcgQEAKIAkJNUM4REQzODEx
RkU0NTVDQTAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVF1aXJrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVBdXRvcGxheVF1aXJrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDOUU1NjgwMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xp
Y2llcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1dlYnNpdGVQ
b2xpY2llcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1NjgxMURGN0Yw
NTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMjZEN0Yy
MTdBQkJCNjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMjZEODAyMTdBQkJCNjAwRjk3QTM1IC8qIFdL
U2FmZUJyb3dzaW5nV2FybmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1NhZmVCcm93c2luZ1dhcm5pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNB
OTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dzaW5nV2FybmluZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjQzOSw2ICs2NDQwLDcgQEAKIAkJCQk1QzBCMTc3RDFFN0M4
ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgKi8sCiAJCQkJNUMwQjE3N0Ux
RTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0uaCAqLywKIAkJCQk1QzBCMTc3
RjFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbiAqLywK
KwkJCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaCAqLywKIAkJCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3Bw
ICovLAogCQkJCTVDRTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5nTG9hZC5oICovLAogCQkJ
CTgzQTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5jcHAgKi8sCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
UHJvdmlkZXIuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcg
KzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LVJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRT
dHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xp
ZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBh
cnRpdGlvbikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopCiB7CiAgICAg
cmV0dXJuIFdlYlNvY2tldFN0cmVhbTo6Y3JlYXRlKHVybCwgY2xpZW50LCBzZXNzaW9uSUQsIGNy
ZWRlbnRpYWxQYXJ0aXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCShyZXZpc2lvbiAyNDAxMDQpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViU29ja2V0UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U29ja2V0UHJvdmlkZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0UHJvdmlkZXI+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0UHJvdmlkZXIpOyB9Ci0gICAgUmVmPFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVS
TCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pIGZpbmFsOworICAgIFJlZjxXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwm
LCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBjb25zdCBXZWJDb3JlOjpTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyKikgZmluYWw7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0UHJvdmlkZXIoKSB7
IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSAr
MzQsMTggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK2NsYXNzIFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CisgICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
cyBhcmUgYWNjZXNzZWQgb25seSBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCisgICAgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KK307CisKK1dlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKKyAgICA6
IFdlYkNvcmU6OkNvb2tpZUphcihhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIpKSB7IH0KKwogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlEOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llSmFyLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICsz
OSw4IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29r
aWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vz
c2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0
IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOworcHJpdmF0ZToKKyAgICBXZWJDb29raWVKYXIoKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTI5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFn
ZVNlc3Npb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRMZWdhY3kueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NQIHZpb2xhdGlvbiByZXBvcnRzIHNob3VsZCBieXBh
c3MgQ1NQIGNoZWNrcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9Q
YWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitjbGFzcyBQYWdlU3RvcmFnZVNlc3Npb25Qcm92
aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKTsgfQor
CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobV9wYWdlKQorICAgICAgICAgICAgcmV0dXJuIFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24obV9wYWdlLT5zZXNzaW9u
SUQoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHZvaWQgc2V0UGFn
ZShXZWJDb3JlOjpQYWdlJiBwYWdlKQorICAgIHsKKyAgICAgICAgbV9wYWdlID0gbWFrZVdlYWtQ
dHIocGFnZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYWtQdHI8V2ViQ29yZTo6UGFnZT4g
bV9wYWdlOworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBACiAJCTU5OEFEOTI4MTIwMUNG
MzIwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTI3MTIwMUNGMzIw
MEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSAqLzsgfTsKIAkJ
NTk4QUQ5MkExMjAxQ0YzQjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJN
b2NrSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU5OEFEOTI5MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyTW9ja0ludGVybmFsLmggKi87IH07CiAJCTU5OEFEQTQ2MTIwMjI3NTAwMEFCQUU0RSAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OThBREE0NTEyMDIyNzUwMDBBQkFFNEUgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTVDOUVGMkY1MjFGMDYxQkUwMDNCREM1NiAvKiBQYWdlU3RvcmFnZVNl
c3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUM5RUYyRjQyMUYwNjFCRTAwM0JEQzU2IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggKi87IH07CiAJCTVDRTQ0RjRBMjA2RDcwRUEwMDNFRkQwMSAvKiBQaW5nSGFuZGxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U0NEY0OTIw
NkQ3MEU5MDAzRUZEMDEgLyogUGluZ0hhbmRsZS5oICovOyB9OwogCQk1RDdCRjgxNDBDMkExRDkw
MDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUQ3
QkY4MTUwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAv
KiBXZWJJbnNwZWN0b3IubW0gKi87IH07CkBAIC05ODYsNiArOTg3LDcgQEAKIAkJNTk4QUQ5Mjcx
MjAxQ0YzMjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlck1vY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5OEFEOTI5
MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTk4QURBNDUxMjAyMjc1MDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJGNDIxRjA2MUJF
MDAzQkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDsgcGF0aCA9IFdl
YkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKIAkJNUNFNDRGNDkyMDZENzBFOTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGluZ0hhbmRsZS5oOyBwYXRoID0g
V2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CiAJCTVEN0JGODEyMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1RDdCRjgxMzBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NTQsNiArMjU1Niw3IEBACiAJCQkJ
QTEwQzFENDQxODIwMkZGQjAwMzY4ODNBIC8qIGlvcyAqLywKIAkJCQlCODI5NThEMTEzMjcwN0Qw
MDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8sCiAJCQkJQjgyOTU4RDIxMzI3MDdEMDAw
MEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLywKKwkJCQk1QzlFRjJGNDIxRjA2MUJFMDAz
QkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk1Q0U0NEY0OTIw
NkQ3MEU5MDAzRUZEMDEgLyogUGluZ0hhbmRsZS5oICovLAogCQkJCTdDMDFDQjgxMTczNDM1Qzkw
MEM1RDgwNyAvKiBQb3B1cE1lbnVNYWMuaCAqLywKIAkJCQk3QzAxQ0I4MjE3MzQzNUM5MDBDNUQ4
MDcgLyogUG9wdXBNZW51TWFjLm1tICovLApAQCAtMjkzNCw2ICsyOTM3LDcgQEAKIAkJCQlFMTUz
MUJEODIxODdCOTU0MDAyRTNGODEgLyogTlNVUkxEb3dubG9hZFNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNENDM3OUIxRDU3QUJFRjAwQUI4NUVBIC8qIE9iakNFdmVudExpc3RlbmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0Q0Mzc5RDFENTdBQkVGMDBBQjg1RUEgLyogT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTVDOUVGMkY1MjFGMDYxQkUwMDNCREM1
NiAvKiBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNF
NDRGNEEyMDZENzBFQTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExMEMxRDVGMTgyMDMwMEUwMDM2ODgzQSAvKiBQb3B1cE1lbnVJT1MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDMDFDQjg1MTczNDM1QzkwMEM1RDgwNyAvKiBQb3B1cE1lbnVNYWMuaCBpbiBIZWFk
ZXJzICovLApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjQwMTA0
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYkNhY2hlLm1tOgorICAgICAgICAoK1tXZWJD
YWNoZSBhZGRJbWFnZVRvQ2FjaGU6Zm9yVVJMOmZvckZyYW1lOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25X
aXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBpbml0U2ltcGxl
SFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZlcmVuY2VzOmdyb3VwTmFtZTpdKToKKwog
MjAxOS0wMS0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlZHVjZSB1c2Ugb2YgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24gaW4gV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJDYWNoZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYkNhY2hlLm1tCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYkNhY2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5o
PgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIApAQCAtNTAsNiArNTEsMTMgQEAKICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgogI2VuZGlmCiAKK2NsYXNzIERlZmF1bHRTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgeworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24o
KSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0dXJuICZXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworICAgIH0KK307CisKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJDYWNoZQogCiArICh2b2lkKWluaXRpYWxpemUKQEAgLTE2NSw3ICsxNzMs
OCBAQCArIChib29sKWFkZEltYWdlVG9DYWNoZTooQ0dJbWFnZVJlZilpbWFnCiAgICAgaWYgKCFp
bWFnZSB8fCAhdXJsIHx8ICFbW3VybCBhYnNvbHV0ZVN0cmluZ10gbGVuZ3RoXSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0
b24oKS5hZGRJbWFnZVRvQ2FjaGUoUmV0YWluUHRyPENHSW1hZ2VSZWY+KGltYWdlKSwgdXJsLCBm
cmFtZSA/IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigp
IDogZW1wdHlTdHJpbmcoKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV2Vi
Q29yZTo6Q29va2llSmFyOjpjcmVhdGUoKS5wdHIoKSk7CisgICAgYXV0byBwcm92aWRlciA9IGFk
b3B0UmVmKCpuZXcgRGVmYXVsdFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpOworICAgIHJldHVybiBX
ZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuYWRkSW1hZ2VUb0NhY2hlKFJldGFpblB0
cjxDR0ltYWdlUmVmPihpbWFnZSksIHVybCwgZnJhbWUgPyBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQo
KS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5U3RyaW5nKCksIFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKFdURk1v
dmUocHJvdmlkZXIpKS5wdHIoKSk7CiB9CiAKICsgKHZvaWQpcmVtb3ZlSW1hZ2VGcm9tQ2FjaGVG
b3JVUkw6KE5TVVJMICopdXJsCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIlBhZ2VTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmgiCiAjaW1wb3J0ICJTdG9yYWdlVGhyZWFkLmgiCiAjaW1wb3J0ICJXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaCIKICNpbXBvcnQgIldlYkFwcGxpY2F0aW9uQ2FjaGVJbnRlcm5hbC5oIgpA
QCAtMTQ0MCwxMyArMTQ0MSwxNCBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hCiAgICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShn
cm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRo
KTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7CiAKKyAgICBhdXRvIHN0
b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUoKTsKICAg
ICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbigKICAgICAgICAgbWFrZVVuaXF1
ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpLAogICAgICAgICBTb2NrZXRQcm92aWRlcjo6Y3Jl
YXRlKCksCiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBCYWNrRm9yd2Fy
ZExpc3Q6OmNyZWF0ZShzZWxmKSwKLSAgICAgICAgQ29va2llSmFyOjpjcmVhdGUoKQorICAgICAg
ICBDb29raWVKYXI6OmNyZWF0ZShzdG9yYWdlUHJvdmlkZXIuY29weVJlZigpKQogICAgICk7CiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xp
ZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKQEAgLTE0NzcsNiArMTQ3OSw3IEBAIC0g
KHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICBwYWdlQ29uZmlndXJh
dGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0gJl9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRD
b250cm9sbGVyKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtTdG9yZSA9ICZf
cHJpdmF0ZS0+Z3JvdXAtPnZpc2l0ZWRMaW5rU3RvcmUoKTsKICAgICBfcHJpdmF0ZS0+cGFnZSA9
IG5ldyBQYWdlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBzdG9yYWdlUHJvdmlk
ZXItPnNldFBhZ2UoKl9wcml2YXRlLT5wYWdlKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXRH
cm91cE5hbWUoZ3JvdXBOYW1lKTsKIApAQCAtMTcwNiwxMyArMTcwOSwxNCBAQCAtIChpZClpbml0
U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOCiAgICAgX3ByaXZhdGUtPmdyb3VwID0gV2Vi
Vmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5f
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZp
ZXcoc2VsZik7CiAKKyAgICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyOjpjcmVhdGUoKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJh
dGlvbigKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpLAogICAg
ICAgICBTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVy
OjpjcmVhdGUoKSwKICAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0
ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZShzZWxmKSwKLSAgICAgICAgQ29v
a2llSmFyOjpjcmVhdGUoKQorICAgICAgICBDb29raWVKYXI6OmNyZWF0ZShzdG9yYWdlUHJvdmlk
ZXIuY29weVJlZigpKQogICAgICk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50
ID0gbmV3IFdlYkNocm9tZUNsaWVudElPUyhzZWxmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQpAQCAtMTczNCw2ICsxNzM4LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhT
dHlsZTooTgogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBsdWdpbkluZm9Qcm92aWRlciA9ICZXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UgPSBu
ZXcgUGFnZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgc3RvcmFnZVByb3ZpZGVy
LT5zZXRQYWdlKCpfcHJpdmF0ZS0+cGFnZSk7CiAgICAgCiAgICAgW3NlbGYgc2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkOllFU107CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wMS0xNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNpbmcg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgor
ICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisKIDIwMTktMDEtMTUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZWR1Y2UgdXNl
IG9mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGluIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNDAxMDQp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSAi
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVy
cy5oIgorI2luY2x1ZGUgIlBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
UGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiV2Vi
QXBwbGljYXRpb25DYWNoZS5oIgpAQCAtMzEwNiwxMyArMzEwNywxNCBAQCBIUkVTVUxUIFdlYlZp
ZXc6OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtCiAKICAgICBtX2luc3BlY3RvckNsaWVudCA9IG5l
dyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CiAKKyAgICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9
IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUoKTsKICAgICBQYWdlQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uKAogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkVkaXRvckNsaWVu
dD4odGhpcyksCiAgICAgICAgIFNvY2tldFByb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgbWFr
ZVVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4oKSwKICAgICAgICAgV2ViQ29yZTo6Q2FjaGVT
dG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0
ZSgpLAotICAgICAgICBDb29raWVKYXI6OmNyZWF0ZSgpCisgICAgICAgIENvb2tpZUphcjo6Y3Jl
YXRlKHN0b3JhZ2VQcm92aWRlci5jb3B5UmVmKCkpCiAgICAgKTsKICAgICBjb25maWd1cmF0aW9u
LmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyk7CiAgICAgY29uZmlndXJh
dGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsK
QEAgLTMxMjgsNiArMzEzMCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6aW5pdFdpdGhGcmFtZShSRUNU
IGZyYW0KICAgICBjb25maWd1cmF0aW9uLnBsdWdpbkluZm9Qcm92aWRlciA9ICZXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpOwogCiAgICAgbV9wYWdlID0gbmV3IFBhZ2UoV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7CisgICAgc3RvcmFnZVByb3ZpZGVyLT5zZXRQYWdlKCpwYWdlKTsK
ICAgICBwcm92aWRlR2VvbG9jYXRpb25UbyhtX3BhZ2UsICpuZXcgV2ViR2VvbG9jYXRpb25DbGll
bnQodGhpcykpOwogCiAgICAgbV9wYWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKHsgRGlkRmlyc3RM
YXlvdXQsIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359357</attachid>
            <date>2019-01-16 23:49:09 -0800</date>
            <delta_ts>2019-01-16 23:58:09 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>60565</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE93bmVyc2hpcCBvZiB0
aGUgbWFwIHRoYXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBzZWFyY2hl
cyBuZWVkcyB0byBtb3ZlIHRvIHRoZSBXZWJLaXQvV2ViS2l0TGVnYWN5IGxheWVyLAorICAgICAg
ICBzbyB3aGVuIFdlYkNvcmUgdXNlZCB0byBsb29rIGluIHRoaXMgbWFwIGl0IG5lZWRzIHRvIGNh
bGwgYSBjbGllbnQgZnVuY3Rpb24gdG8gYXNrIHRoZSBsYXllciBhYm92ZSBpdCBmb3IgdGhlIHN0
b3JhZ2Ugb2JqZWN0LgorICAgICAgICBJJ3ZlIGNhbGxlZCB0aGlzIGNsaWVudCBTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyOjpzdG9yYWdlU2Vzc2lvbi4gIFJpZ2h0IG5vdyBpdCBqdXN0IGxvb2tzIGlu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24sCisgICAgICAgIGJ1dCB0aGlz
IGFkZGVkIGFic3RyYWN0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1vdmUgdGhlIGN1cnJlbnRs
eSBwcm9jZXNzLWdsb2JhbCBtYXAgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIE5ldHdvcmtQcm9jZXNz
IG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Q29va2llSmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzRW5h
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Nv
Y2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFByb3ZpZGVyOjpjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZURhdGFGb3JIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjp+U3RvcmFnZVNlc3Npb25Qcm92aWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0
cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Z2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSk6CisKIDIwMTktMDEtMTYgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVcGRh
dGUgdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIHRvIGFjdHVhbGx5IHVzZSB2ZXJ0
ZXggYnVmZmVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEyMyw3ICsx
MjQsNyBAQAogICAgICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEID0gcGFnZSA/IHBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKICAgICAgICAgU3RyaW5nIHBhcnRpdGlvbiA9
IG1fZG9jdW1lbnQtPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCk7Ci0gICAgICAgIG1faGFuZGxl
ID0gbV9zb2NrZXRQcm92aWRlci0+Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKG1faGFuZHNoYWtl
LT51cmwoKSwgKnRoaXMsIHNlc3Npb25JRCwgcGFydGl0aW9uKTsKKyAgICAgICAgbV9oYW5kbGUg
PSBtX3NvY2tldFByb3ZpZGVyLT5jcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUobV9oYW5kc2hha2Ut
PnVybCgpLCAqdGhpcywgc2Vzc2lvbklELCBwYXJ0aXRpb24sIGZyYW1lLT5sb2FkZXIoKS5uZXR3
b3JraW5nQ29udGV4dCgpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0MDEwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTkwMiw2ICsxOTAyLDcgQEAKIAkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMw
IC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNDMwNEFFMTkxQUM5MDgwMDBFMkJDMCAvKiBFWFRTaGFkZXJUZXh0
dXJlTE9ELmggKi87IH07CiAJCTVDNDMwNEI2MTkxQUVGNDYwMDBFMkJDMCAvKiBKU0VYVFNoYWRl
clRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDNDMwNEI0MTkxQUVGNDYwMDBFMkJDMCAvKiBKU0VYVFNoYWRlclRleHR1cmVMT0QuaCAq
LzsgfTsKIAkJNUM3Qzg4RDgxRDBGMUY0QTAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzdDODhENzFEMEYx
RjJCMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1QzlFRjJGMzIxRjA2MTkwMDAzQkRDNTYgLyogU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUM5RUYyRjIyMUYwNjE3MTAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1Q0ExREVDNjFGNzFGMUM3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ExREVDNDFGNzFFNjg3MDBF
NzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUNCMzdGRkYxQzYyRDJBMTAwRjIwMTg4IC8qIFNjcm9sbEFu
aW1hdG9yTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNCMzdGRkQxQzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5oICovOyB9
OwogCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExp
bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQkM4
REFCMUFBQTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oICovOyB9
OwpAQCAtODkwOCw2ICs4OTA4LDcgQEAKIAkJNUM5Qjg2MEIxQzIxRTNDNjAwMTEwRjM2IC8qIE5l
dHdvcmtMb2FkTWV0cmljcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE5ldHdvcmtMb2FkTWV0cmljcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUM5RUYxNkYxREZGNzE5OTAwQTQ1MkUzIC8qIFhQYXRoR3JhbW1hci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYUGF0aEdyYW1tYXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1QzlFRjE3MDFERkY3MTk5MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhQYXRoR3JhbW1hci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJGMjIxRjA2MTcxMDAzQkRDNTYgLyogU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
QTFERUMyMUY3MUU2ODYwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUEhlYWRlckZpZWxkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMURFQzQxRjcxRTY4NzAwRTcxQkQzIC8qIEhUVFBIZWFk
ZXJGaWVsZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVFRQSGVhZGVyRmll
bGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkMxQzYyRDI3ODAwRjIw
MTg4IC8qIFNjcm9sbEFuaW1hdG9yTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JvbGxBbmltYXRvck1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTk5MzUsNiArMjAwMzAsNyBAQAogCQkJCTUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1
NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLywKIAkJCQk1MTBENEEzMjEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJNUM2NjhFNjQxRTdDNkMz
NTAwRDMyQjNCIC8qIFNvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwICovLAorCQkJCTVDOUVGMkYy
MjFGMDYxNzEwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi8sCiAJCQkJNDY4
MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi8sCiAJ
CQkJRTE4MDgxMTAxNkZDRjQyRTAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNw
cCAqLywKIAkJCQlFMTgwODExNTE2RkNGOUNCMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJD
bGllbnQuaCAqLywKQEAgLTMxNTQwLDYgKzMxNTQyLDcgQEAKIAkJCQk1MUUwQkIzODBEQTVBQ0I2
MDBBOUU0MTcgLyogU3RvcmFnZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUwRDBFODMwRkY0
MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
Mzc2MzZDMUEyRTY4QkIwMDlBN0VFMiAvKiBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTVDOUVGMkYzMjFGMDYxOTAwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTY2RDNDRDFFOEVENDhGMDBBRDYyRTMg
LyogU3RvcmFnZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4
NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2
RTZGRTgxQkJEMTJERjAwMEE2MDMzIC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCShyZXZpc2lvbiAy
NDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTAgKzM2LDE2IEBACiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTYW1lU2l0ZUluZm8u
aCIKKyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1N5
c3RlbVRyYWNpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitSZWY8Q29va2llSmFyPiBD
b29raWVKYXI6OmNyZWF0ZShSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJiBzdG9yYWdlU2Vz
c2lvblByb3ZpZGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvb2tpZUphcihXVEZN
b3ZlKHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpKSk7Cit9CisKIEluY2x1ZGVTZWN1cmVDb29raWVz
IENvb2tpZUphcjo6c2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gKHVybC5wcm90b2NvbElzKCJo
dHRwcyIpICYmICFkb2N1bWVudC5mb3VuZE1peGVkQ29udGVudCgpLmNvbnRhaW5zKFNlY3VyaXR5
Q29udGV4dDo6TWl4ZWRDb250ZW50VHlwZTo6QWN0aXZlKSkgPyBJbmNsdWRlU2VjdXJlQ29va2ll
czo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vOwpAQCAtNTIsOSArNTgsOSBAQAogICAg
IHJldHVybiB7IH07CiB9CiAKLVJlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRlKCkKK0Nv
b2tpZUphcjo6Q29va2llSmFyKFJlZjxTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIpCisgICAgOiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIoV1RGTW92ZShz
dG9yYWdlU2Vzc2lvblByb3ZpZGVyKSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29r
aWVKYXIpOwogfQogCiBDb29raWVKYXI6On5Db29raWVKYXIoKSA9IGRlZmF1bHQ7CkBAIC03Myw3
ICs3OSw3IEBACiAgICAgfQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0Owot
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0
b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJlc3VsdCA9
IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
c2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1
cmVDb29raWVzKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTEwLDE1ICsxMTYsMTUgQEAKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwogICAgIH0KIAotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNz
aW9uKCkpCiAgICAgICAgIHNlc3Npb24tPnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0
UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBjb29raWVTdHJpbmcpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpIGNvbnN0Citib29sIENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3Qg
RG9jdW1lbnQmKSBjb25zdAogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9u
KCkpCiAgICAgICAgIHJldHVybiBzZXNzaW9uLT5jb29raWVzRW5hYmxlZCgpOwogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMjUsOSArMTMxLDkgQEAKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFy
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vz
c2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBD
b29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lv
bklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykgY29uc3QKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAg
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBw
YWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmZp
cnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1cmVD
b29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAgfQpAQCAtMTYwLDcgKzE2Niw3IEBACiAgICAgICAg
IHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKICAgICB9CiAKLSAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24oZG9jdW1lbnQuc2Vzc2lvbklEKCkpKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gc2Vz
c2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llcyk7CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE2Nyw5ICsxNzMsOSBAQAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBDb29raWVKYXI6OmRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lk
IENvb2tpZUphcjo6ZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBpZiAoYXV0byogc2Vzc2lvbiA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oZG9jdW1lbnQuc2Vzc2lvbklEKCkp
KQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9y
YWdlU2Vzc2lvbigpKQogICAgICAgICBzZXNzaW9uLT5kZWxldGVDb29raWUodXJsLCBjb29raWVO
YW1lKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
UEFMIHsKQEAgLTQwLDExICs0MSwxMyBAQAogY2xhc3MgRG9jdW1lbnQ7CiBzdHJ1Y3QgQ29va2ll
Owogc3RydWN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5OworY2xhc3MgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOworY2xhc3MgU3RvcmFnZVNlc3Npb25Qcm92aWRlcjsKIHN0cnVjdCBTYW1l
U2l0ZUluZm87CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIENvb2tpZUphciA6IHB1YmxpYyBSZWZD
b3VudGVkPENvb2tpZUphcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29va2llSmFyPiBj
cmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPENvb2tpZUphcj4gY3JlYXRlKFJlZjxTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyPiYmKTsKICAgICAKICAgICBzdGF0aWMgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkUHJveHkgY29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29uc3QgRG9jdW1lbnQmLCBj
b25zdCBVUkwmKTsKIApAQCAtNjMsNiArNjYsMTAgQEAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMg
U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbyhjb25zdCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyBJ
bmNsdWRlU2VjdXJlQ29va2llcyBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhjb25zdCBEb2N1
bWVudCYsIGNvbnN0IFVSTCYpOworICAgIENvb2tpZUphcihSZWY8U3RvcmFnZVNlc3Npb25Qcm92
aWRlcj4mJik7CisKK3ByaXZhdGU6CisgICAgUmVmPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1f
c3RvcmFnZVNlc3Npb25Qcm92aWRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyNDAxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTM1LDYgKzUzNSwxMCBAQAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEVtcHR5U3Rv
cmFnZU5hbWVzcGFjZSk7CiB9CiAKK2NsYXNzIEVtcHR5U3RvcmFnZVNlc3Npb25Qcm92aWRlciA6
IHB1YmxpYyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Np
b24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorfTsK
KwogUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCkK
IHsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbiB7CkBAIC01NDMsNyAr
NTQ3LDcgQEAKICAgICAgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBD
YWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIGFkb3B0UmVmKCpuZXcgRW1w
dHlCYWNrRm9yd2FyZENsaWVudCksCi0gICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKCkKKyAgICAg
ICAgQ29va2llSmFyOjpjcmVhdGUoYWRvcHRSZWYoKm5ldyBFbXB0eVN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIpKQogICAgIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlDaHJvbWVD
bGllbnQ+IGR1bW15Q2hyb21lQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI0
MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCkBAIC0xNjYsNyArMTY3LDcgQEAKIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDog
dWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogYm9vbDsK
IAotY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPiB7CitjbGFzcyBQYWdl
IDogcHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFn
ZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nc0Jhc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkg
KzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVmPFNvY2tldFN0cmVhbUhh
bmRsZT4gU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwm
IHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uKQorUmVmPFNvY2tldFN0
cmVhbUhhbmRsZT4gU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShjb25z
dCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBjb25zdCBT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyKiBwcm92aWRlcikKIHsKLSAgICByZXR1cm4gU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKHVybCwgY2xpZW50LCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQ
YXJ0aXRpb24sIHsgfSk7CisgICAgcmV0dXJuIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0
ZSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCB7IH0sIHByb3Zp
ZGVyKTsKIH0KICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgJ
KHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29ja2V0UHJvdmlkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOwogY2xhc3MgU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50OwpAQCAtMzgsNyArMzksNyBAQAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU29ja2V0
UHJvdmlkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29ja2V0UHJvdmlkZXI+IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNvY2tldFByb3ZpZGVyPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNvY2tldFByb3ZpZGVyKTsgfQotICAgIHZpcnR1YWwgUmVmPFNvY2tl
dFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRl
bnRpYWxQYXJ0aXRpb24pOworICAgIHZpcnR1YWwgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gY3Jl
YXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGNv
bnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2aXJ0dWFsIH5Tb2NrZXRQcm92aWRl
cigpIHsgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTksNyArMTksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
NDEsNyArNDEsNyBAQAogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIAotY2xhc3MgTmV0d29ya2luZ0NvbnRleHQgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3Jr
aW5nQ29udGV4dD4geworY2xhc3MgTmV0d29ya2luZ0NvbnRleHQgOiBwdWJsaWMgU3RvcmFnZVNl
c3Npb25Qcm92aWRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TmV0d29ya2luZ0NvbnRleHQo
KSA9IGRlZmF1bHQ7CiAKQEAgLTU4LDggKzU4LDYgQEAKIAogICAgIHZpcnR1YWwgU3RyaW5nIHNv
dXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
IH0KIAotICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0ID0gMDsKLQogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIFJlc291cmNlRXJy
b3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0ID0gMDsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAorCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTI5LDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzYsOSArNzgsOCBAQAogICAg
IHJldHVybiBkYXRhTGVuZ3RoIC0gMjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxW
ZWN0b3I8dWludDhfdD4sIGJvb2w+PiBjb29raWVEYXRhRm9ySGFuZHNoYWtlKGNvbnN0IENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KQorc3RhdGljIE9wdGlv
bmFsPHN0ZDo6cGFpcjxWZWN0b3I8dWludDhfdD4sIGJvb2w+PiBjb29raWVEYXRhRm9ySGFuZHNo
YWtlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBj
b25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkKIHsK
LSAgICBhdXRvIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24oaGVhZGVyRmllbGRQcm94eS5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0
d29ya1N0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIApA
QCAtMTAzLDcgKzEwNCw3IEBACiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxz
ZTsKIAogICAgIGlmIChoZWFkZXJGaWVsZFByb3h5KSB7Ci0gICAgICAgIGF1dG8gY29va2llRGF0
YUZyb21OZXR3b3JrU2Vzc2lvbiA9IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoaGVhZGVyRmllbGRQ
cm94eS52YWx1ZSgpKTsKKyAgICAgICAgYXV0byBjb29raWVEYXRhRnJvbU5ldHdvcmtTZXNzaW9u
ID0gY29va2llRGF0YUZvckhhbmRzaGFrZShtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgPyBtX3N0
b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkgOiBudWxscHRyLCAqaGVhZGVy
RmllbGRQcm94eSk7CiAgICAgICAgIGlmICghY29va2llRGF0YUZyb21OZXR3b3JrU2Vzc2lvbikg
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UsIGZhbHNlKTsKICAgICAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmFn
ZVNlc3Npb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFBBTCB7CitjbGFzcyBTZXNzaW9uSUQ7Cit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOworCitj
bGFzcyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IH5TdG9yYWdlU2Vzc2lvblByb3ZpZGVyKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDcmVkZW50aWFsOworY2xhc3MgU3RvcmFnZVNlc3Npb25Qcm92aWRlcjsKIGNsYXNz
IFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKIAogY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGUgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNv
bnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVybCwgY2xpZW50LCBzZXNzaW9uSUQsIGNyZWRlbnRp
YWxQYXJ0aXRpb24sIFdURk1vdmUoYXVkaXREYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVk
aXREYXRhLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKiBwcm92aWRlcikgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVybCwgY2xpZW50LCBzZXNzaW9u
SUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFdURk1vdmUoYXVkaXREYXRhKSwgcHJvdmlkZXIpKTsg
fQogCiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCkBAIC01OCw3ICs1
OSw3IEBACiAgICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KTsKICAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFs
UGFydGl0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0
aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwgY29uc3QgU3RvcmFnZVNlc3Npb25Q
cm92aWRlciopOwogICAgIHZvaWQgY3JlYXRlU3RyZWFtcygpOwogICAgIHZvaWQgc2NoZWR1bGVT
dHJlYW1zKCk7CiAgICAgdm9pZCBjaG9vc2VQcm94eSgpOwpAQCAtMTAzLDYgKzEwNCw3IEBACiAg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgU3RyaW5nIG1fY3JlZGVudGlhbFBh
cnRpdGlvbjsKICAgICBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4gbV9hdWRpdERhdGE7Cisg
ICAgUmVmUHRyPGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Npb25Q
cm92aWRlcjsKIAogICAgIFN0cmVhbUJ1ZmZlcjx1aW50OF90LCAxMDI0ICogMTAyND4gbV9idWZm
ZXI7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEJ1ZmZlclNpemUgPSAxMDAgKiAxMDI0
ICogMTAyNDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHJldmlz
aW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVy
cm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAi
U3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsu
aD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAg
LTk1LDcgKzk2LDcgQEAKICNlbmRpZgogfQogCi1Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRl
bnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkK
K1NvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJM
JiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGlj
YXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
KiBwcm92aWRlcikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkKICAgICAs
IG1fY29ubmVjdGluZ1N1YnN0YXRlKE5ldykKICAgICAsIG1fY29ubmVjdGlvblR5cGUoVW5rbm93
bikKQEAgLTEwMyw2ICsxMDQsNyBAQAogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAg
ICwgbV9jcmVkZW50aWFsUGFydGl0aW9uKGNyZWRlbnRpYWxQYXJ0aXRpb24pCiAgICAgLCBtX2F1
ZGl0RGF0YShXVEZNb3ZlKGF1ZGl0RGF0YSkpCisgICAgLCBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIocHJvdmlkZXIpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAg
bmV3IGNsaWVudCAlcCIsIHRoaXMsICZtX2NsaWVudCk7CiAKQEAgLTM2Nyw3ICszNjksNyBAQAog
CiAgICAgLy8gVHJ5IHN5c3RlbSBjcmVkZW50aWFsIHN0b3JhZ2UgZmlyc3QsIG1hdGNoaW5nIEhU
VFAgYmVoYXZpb3IgKENGTmV0d29yayBvbmx5IGFza3MgdGhlIGNsaWVudCBmb3IgcGFzc3dvcmQg
aWYgaXQgY291bGRuJ3QgZmluZCBpdCBpbiBLZXljaGFpbikuCiAgICAgQ3JlZGVudGlhbCBzdG9y
ZWRDcmVkZW50aWFsOwotICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpKSB7CisgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyID8gbV9zdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpIDogbnVsbHB0cikgewogICAgICAgICBzdG9y
ZWRDcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9yYWdlKCkuZ2V0RnJv
bVBlcnNpc3RlbnRTdG9yYWdlKHByb3RlY3Rpb25TcGFjZSk7CiAgICAgICAgIGlmIChzdG9yZWRD
cmVkZW50aWFsLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHN0b3JlZENyZWRlbnRpYWwgPSBzdG9y
YWdlU2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5nZXQobV9jcmVkZW50aWFsUGFydGl0aW9u
LCBwcm90ZWN0aW9uU3BhY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCShyZXZp
c2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCArNDQsMTEgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Owor
Y2xhc3MgU3RvcmFnZVNlc3Npb25Qcm92aWRlcjsKIAogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGUgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYs
IFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNv
Y2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQpKTsgfQorICAgIHN0YXRpYyBSZWY8U29j
a2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKiBw
cm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVy
bCwgY2xpZW50LCBwcm92aWRlcikpOyB9CiAKICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsKCk7CiAKQEAgLTU2LDcgKzU3LDcgQEAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBs
YXRmb3JtQ2xvc2UoKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYp
OworICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwg
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciop
OwogCiAgICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkgZmluYWw7CiAgICAgT3B0aW9uYWw8c2l6
ZV90PiBwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKQEAgLTY5
LDYgKzcwLDcgQEAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtXcml0ZUJ1ZmZlclNpemUgPSA0
ICogMTAyNDsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtSZWFkQnVmZmVyU2l6ZSA9IDQgKiAx
MDI0OwogCisgICAgUmVmUHRyPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Np
b25Qcm92aWRlcjsKICAgICBSZWZQdHI8VGhyZWFkPiBtX3dvcmtlclRocmVhZDsKICAgICBzdGQ6
OmF0b21pYzxib29sPiBtX3J1bm5pbmcgeyB0cnVlIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDdXJsLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJM
JiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50KQorU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqIHByb3ZpZGVy
KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQorICAgICwgbV9zdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKHByb3ZpZGVyKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3Ry
ZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCAmbV9jbGllbnQpOwogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHJldmlz
aW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC01MSw3ICs1Miw3IEBACiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgZmlu
YWwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0ZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGlj
YXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1w
bD4gY3JlYXRlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwgY29u
c3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhh
bmRsZUltcGwoKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KQEAgLTYwLDcgKzYxLDcgQEAKICAgICB2b2lkIHBsYXRmb3JtU2VuZEhhbmRzaGFrZShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBPcHRpb25hbDxDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eT4mLCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiYmKSBmaW5h
bDsKICAgICB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5hbDsKIHByaXZhdGU6Ci0gICAgU29ja2V0
U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmKTsK
KyAgICBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCYsIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKIAogICAgIHNpemVfdCBi
dWZmZXJlZEFtb3VudCgpIGZpbmFsOwogICAgIE9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5k
SW50ZXJuYWwoY29uc3QgdWludDhfdCosIHNpemVfdCk7CkBAIC03OCw2ICs3OSw4IEBACiAgICAg
dm9pZCBkaWRGYWlsKFNvY2tldFN0cmVhbUVycm9yJiYpOwogICAgIHZvaWQgd3JpdGVSZWFkeSgp
OwogCisgICAgUmVmUHRyPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Npb25Q
cm92aWRlcjsKKyAgICAKICAgICBHUmVmUHRyPEdJT1N0cmVhbT4gbV9zdHJlYW07CiAgICAgR1Jl
ZlB0cjxHSW5wdXRTdHJlYW0+IG1faW5wdXRTdHJlYW07CiAgICAgR1JlZlB0cjxHUG9sbGFibGVP
dXRwdXRTdHJlYW0+IG1fb3V0cHV0U3RyZWFtOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbFNvdXAuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNCBAQAorCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEx
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MgTHRkLiBBbGwgUmlnaHRzIFJlc2VydmVkLgpAQCAtNDEsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCiAjaW5jbHVkZSAiU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIlVSTFNvdXAuaCIK
ICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtODEsMTIgKzgzLDEy
IEBACiB9CiAjZW5kaWYKIAotUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpCitSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4g
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwgY29uc3QgU3RvcmFnZVNlc3Np
b25Qcm92aWRlciogc3RvcmFnZVNlc3Npb25Qcm92aWRlcikKIHsKLSAgICBSZWY8U29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbD4gc29ja2V0ID0gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsKHVybCwgY2xpZW50KSk7CisgICAgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IHNvY2tl
dCA9IGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc3Rv
cmFnZVNlc3Npb25Qcm92aWRlcikpOwogCiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDYxLCA5
MCkKLSAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RvcmFnZVNlc3Npb25Qcm92aWRlciA/IHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIt
PnN0b3JhZ2VTZXNzaW9uKCkgOiBudWxscHRyOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNz
aW9uKQogICAgICAgICByZXR1cm4gc29ja2V0OwogCkBAIC0xMTEsOCArMTEzLDkgQEAKICAgICBy
ZXR1cm4gc29ja2V0OwogfQogCi1Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVu
dCkKK1NvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3Qg
VVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBjb25zdCBTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKiBwcm92aWRlcikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmws
IGNsaWVudCkKKyAgICAsIG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlcihwcm92aWRlcikKICAgICAs
IG1fY2FuY2VsbGFibGUoYWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpKQogewogICAgIExP
RyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCAm
bV9jbGllbnQpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMDEtMTYg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBT
dG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24gaW4gV2ViQ29y
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVTb2NrZXRTdHJlYW0p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
b2NrZXRTdHJlYW06Ok5ldHdvcmtTb2NrZXRTdHJlYW0pOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRQcm92aWRlcjo6
Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0UHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpXZWJDb29raWVKYXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaDoKKwogMjAxOS0w
MS0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEg
bmV3IFNQSSBmb3IgY29udHJvbGxpbmcgZ2V0VXNlck1lZGlhCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4MSw3ICsyODEsNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHRva2VuID0geyBt
X25ldHdvcmtQcm9jZXNzLT5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIH07CiAjZW5kaWYK
LSAgICBtX25ldHdvcmtTb2NrZXRTdHJlYW1zLnNldChpZGVudGlmaWVyLCBOZXR3b3JrU29ja2V0
U3RyZWFtOjpjcmVhdGUoV1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQsIGNhY2hlUGFydGl0aW9uLCBp
ZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24sIFdURk1vdmUodG9rZW4pKSk7CisgICAgbV9uZXR3b3Jr
U29ja2V0U3RyZWFtcy5zZXQoaWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRl
KG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCksIFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjYWNoZVBh
cnRpdGlvbiwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOwogfQog
CiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZXN0cm95U29ja2V0U3RyZWFt
KHVpbnQ2NF90IGlkZW50aWZpZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcg
Kzk0LDcgQEAKIGNsYXNzIENhY2hlOwogfQogCi1jbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1Ymxp
YyBDaGlsZFByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQsIHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxOZXR3b3JrUHJvY2Vzcz4KK2NsYXNzIE5ldHdvcmtQcm9jZXNz
IDogcHVibGljIENoaWxkUHJvY2VzcywgcHJpdmF0ZSBEb3dubG9hZE1hbmFnZXI6OkNsaWVudCwg
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE5ldHdvcmtQcm9jZXNzPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPE5ldHdvcmtQcm9jZXNzPgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQog
ICAgICwgcHVibGljIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5
RmlsZUhhbmRsZXIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVh
bS5oIgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Tb2NrZXRTdHJlYW1FcnJvci5oPgpAQCAtMzQsMTUgKzM1LDE1IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0
d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFVSTCYmIHVybCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRp
b24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRT
dHJlYW0+IE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRh
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTb2NrZXRTdHJlYW0oV1RGTW92
ZSh1cmwpLCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGlkZW50aWZpZXIsIGNvbm5l
Y3Rpb24sIFdURk1vdmUoYXVkaXREYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHdvcmtTb2NrZXRTdHJlYW0obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUodXJsKSwgc2Vzc2lvbklE
LCBjcmVkZW50aWFsUGFydGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0aW9uLCBXVEZNb3ZlKGF1
ZGl0RGF0YSkpKTsKIH0KIAotTmV0d29ya1NvY2tldFN0cmVhbTo6TmV0d29ya1NvY2tldFN0cmVh
bShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVk
ZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKK05ldHdv
cmtTb2NrZXRTdHJlYW06Ok5ldHdvcmtTb2NrZXRTdHJlYW0oTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0
YSkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9jb25uZWN0aW9uKGNv
bm5lY3Rpb24pCi0gICAgLCBtX2ltcGwoU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKHVy
bCwgKnRoaXMsIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgV1RGTW92ZShhdWRpdERh
dGEpKSkKKyAgICAsIG1faW1wbChTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUodXJsLCAq
dGhpcywgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSks
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHNl
c3Npb25JRCkucHRyKCkpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uaAkocmV2aXNpb24gMjQwMTA0KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDkgKzM5LDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFz
cyBOZXR3b3JrUHJvY2VzczsKKwogY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVy
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0
cmVhbT4gY3JlYXRlKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50
aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNl
QXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0
cmVhbT4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgVVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24m
LCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CiAgICAgfk5ldHdvcmtT
b2NrZXRTdHJlYW0oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC02Miw3ICs2NCw3IEBACiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAgICBOZXR3b3JrU29ja2V0U3RyZWFt
KFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9u
LCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25B
dWRpdFRva2VuJiYpOworICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0oTmV0d29ya1Byb2Nlc3MmLCBV
UkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwg
dWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0aW9uQXVk
aXRUb2tlbiYmKTsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBJUEM6OkNvbm5l
Y3Rpb24mIG1fY29ubmVjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Qcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXI+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNv
bnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIobmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCkpOyB9
CisgICAgCitwcml2YXRlOgorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCkKKyAgICAgICAgOiBtX25ldHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdvcmtQcm9jZXNz
KSkKKyAgICAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpIHsgfQorCisgICAgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsCisgICAg
eworICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgV2Vha1B0cjxOZXR3b3JrUHJv
Y2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
K307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQ0NSw2ICszNDQ1LDcg
QEAKIAkJNUM4REQzODExRkU0NTVDQTAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVF1aXJrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVBdXRvcGxheVF1aXJrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1NjgwMURGN0YwNTUwMEM5RUUzMyAv
KiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS1dlYnNpdGVQb2xpY2llcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDOUU1NjgxMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyogTmV0d29ya1N0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNBMjZEN0YyMTdBQkJCNjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2FmZUJyb3dzaW5n
V2FybmluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMjZEODAyMTdBQkJC
NjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1NhZmVCcm93c2luZ1dhcm5pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93c2luZ1dhcm5p
bmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dzaW5nV2Fybmlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQzOSw2ICs2NDQwLDcgQEAKIAkJ
CQk1QzBCMTc3RDFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5jcHAgKi8s
CiAJCQkJNUMwQjE3N0UxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0uaCAq
LywKIAkJCQk1QzBCMTc3RjFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5t
ZXNzYWdlcy5pbiAqLywKKwkJCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyogTmV0d29ya1N0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAg
LyogUGluZ0xvYWQuY3BwICovLAogCQkJCTVDRTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5n
TG9hZC5oICovLAogCQkJCTgzQTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFz
ay5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLVJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFdlYlNvY2tldFByb3ZpZGVy
OjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFdlYlNvY2tl
dFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92
aWRlciopCiB7CiAgICAgcmV0dXJuIFdlYlNvY2tldFN0cmVhbTo6Y3JlYXRlKHVybCwgY2xpZW50
LCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCShyZXZp
c2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiBjbGFzcyBXZWJT
b2NrZXRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRQcm92aWRlcik7IH0KLSAgICBSZWY8V2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwg
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGNvbnN0IFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIqKSBmaW5hbDsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRQcm92aWRlcigpIHsgfQog
fTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b29raWVKYXIuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCwx
OCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorY2xhc3MgV2ViU3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKKyAgICAvLyBOZXR3b3JrU3RvcmFnZVNlc3Npb25zIGFy
ZSBhY2Nlc3NlZCBvbmx5IGluIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKyAgICBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bnVsbHB0cjsgfQorfTsKKworV2ViQ29va2llSmFyOjpXZWJDb29raWVKYXIoKQorICAgIDogV2Vi
Q29yZTo6Q29va2llSmFyKGFkb3B0UmVmKCpuZXcgV2ViU3RvcmFnZVNlc3Npb25Qcm92aWRlcikp
IHsgfQorCiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb29raWVKYXIuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDgg
QEAKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpIGZpbmFsOworcHJpdmF0ZToKKyAgICBXZWJDb29raWVKYXIoKTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEw
NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92
aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxOS0wMS0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgQ1NQIHZpb2xhdGlvbiByZXBvcnRzIHNob3VsZCBieXBhc3MgQ1NQIGNoZWNr
cwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNl
c3Npb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCitjbGFzcyBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlciBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKTsgfQorCisgICAgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAobV9wYWdlKQorICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24obV9wYWdlLT5zZXNzaW9uSUQoKSk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHZvaWQgc2V0UGFnZShXZWJDb3JlOjpQ
YWdlJiBwYWdlKQorICAgIHsKKyAgICAgICAgbV9wYWdlID0gbWFrZVdlYWtQdHIocGFnZSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFdlYWtQdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOworfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3ku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBACiAJCTU5OEFEOTI4MTIwMUNGMzIwMEFCQUU0RSAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTI3MTIwMUNGMzIwMEFCQUU0RSAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSAqLzsgfTsKIAkJNTk4QUQ5MkExMjAx
Q0YzQjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTI5
MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVy
bmFsLmggKi87IH07CiAJCTU5OEFEQTQ2MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1OThBREE0NTEyMDIyNzUwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTVDOUVGMkY1MjFGMDYxQkUwMDNCREM1NiAvKiBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RUYy
RjQyMUYwNjFCRTAwM0JEQzU2IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi87IH07
CiAJCTVDRTQ0RjRBMjA2RDcwRUEwMDNFRkQwMSAvKiBQaW5nSGFuZGxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U0NEY0OTIwNkQ3MEU5MDAzRUZE
MDEgLyogUGluZ0hhbmRsZS5oICovOyB9OwogCQk1RDdCRjgxNDBDMkExRDkwMDA4Q0UwNkQgLyog
V2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUQ3QkY4MTUwQzJBMUQ5
MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0
b3IubW0gKi87IH07CkBAIC05ODYsNiArOTg3LDcgQEAKIAkJNTk4QUQ5MjcxMjAxQ0YzMjAwQUJB
RTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5OEFEOTI5MTIwMUNGM0IwMEFC
QUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJN
b2NrSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk4QURBNDUxMjAy
Mjc1MDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJGNDIxRjA2MUJFMDAzQkRDNTYgLyog
UGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDsgcGF0aCA9IFdlYkNvcmVTdXBwb3J0
L1BhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKIAkJNUNFNDRGNDkyMDZENzBFOTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGluZ0hhbmRsZS5oOyBwYXRoID0gV2ViQ29yZVN1cHBv
cnQvUGluZ0hhbmRsZS5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTVEN0JGODEy
MEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1RDdCRjgxMzBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NTQsNiArMjU1Niw3IEBACiAJCQkJQTEwQzFENDQxODIw
MkZGQjAwMzY4ODNBIC8qIGlvcyAqLywKIAkJCQlCODI5NThEMTEzMjcwN0QwMDAwRDBFNzkgLyog
Q29ycmVjdGlvblBhbmVsLmggKi8sCiAJCQkJQjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENv
cnJlY3Rpb25QYW5lbC5tbSAqLywKKwkJCQk1QzlFRjJGNDIxRjA2MUJFMDAzQkRDNTYgLyogUGFn
ZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk1Q0U0NEY0OTIwNkQ3MEU5MDAzRUZE
MDEgLyogUGluZ0hhbmRsZS5oICovLAogCQkJCTdDMDFDQjgxMTczNDM1QzkwMEM1RDgwNyAvKiBQ
b3B1cE1lbnVNYWMuaCAqLywKIAkJCQk3QzAxQ0I4MjE3MzQzNUM5MDBDNUQ4MDcgLyogUG9wdXBN
ZW51TWFjLm1tICovLApAQCAtMjkzNCw2ICsyOTM3LDcgQEAKIAkJCQlFMTUzMUJEODIxODdCOTU0
MDAyRTNGODEgLyogTlNVUkxEb3dubG9hZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3
OUIxRDU3QUJFRjAwQUI4NUVBIC8qIE9iakNFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5M0Q0Mzc5RDFENTdBQkVGMDBBQjg1RUEgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTVDOUVGMkY1MjFGMDYxQkUwMDNCREM1NiAvKiBQYWdlU3Rv
cmFnZVNlc3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNFNDRGNEEyMDZENzBF
QTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMEMxRDVGMTgy
MDMwMEUwMDM2ODgzQSAvKiBQb3B1cE1lbnVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDFD
Qjg1MTczNDM1QzkwMEM1RDgwNyAvKiBQb3B1cE1lbnVNYWMuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNl
c3Npb24gaW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkzNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBNaXNjL1dlYkNhY2hlLm1tOgorICAgICAgICAoK1tXZWJDYWNoZSBhZGRJbWFn
ZVRvQ2FjaGU6Zm9yVVJMOmZvckZyYW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
Omdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50
V2l0aFN0eWxlOmZyYW1lOnByZWZlcmVuY2VzOmdyb3VwTmFtZTpdKToKKwogMjAxOS0wMS0xNSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
ZHVjZSB1c2Ugb2YgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24g
aW4gV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1t
CShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNh
Y2hlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9TdG9yYWdl
U2Vzc2lvblByb3ZpZGVyLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL1J1bkxvb3AuaD4KIApAQCAtNTAsNiArNTEsMTMgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZVRocmVhZFJ1bi5oPgogI2VuZGlmCiAKK2NsYXNzIERlZmF1bHRTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgeworICAgIFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgcmV0dXJuICZXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworICAgIH0KK307CisKIEBpbXBsZW1lbnRhdGlvbiBX
ZWJDYWNoZQogCiArICh2b2lkKWluaXRpYWxpemUKQEAgLTE2NSw3ICsxNzMsOCBAQAogICAgIGlm
ICghaW1hZ2UgfHwgIXVybCB8fCAhW1t1cmwgYWJzb2x1dGVTdHJpbmddIGxlbmd0aF0pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2lu
Z2xldG9uKCkuYWRkSW1hZ2VUb0NhY2hlKFJldGFpblB0cjxDR0ltYWdlUmVmPihpbWFnZSksIHVy
bCwgZnJhbWUgPyBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24oKSA6IGVtcHR5U3RyaW5nKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCks
IFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKCkucHRyKCkpOworICAgIGF1dG8gcHJvdmlkZXIg
PSBhZG9wdFJlZigqbmV3IERlZmF1bHRTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmFkZEltYWdlVG9DYWNoZShSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4oaW1hZ2UpLCB1cmwsIGZyYW1lID8gY29yZShmcmFtZSktPmRvY3Vt
ZW50KCktPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgOiBlbXB0eVN0cmluZygpLCBQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXZWJDb3JlOjpDb29raWVKYXI6OmNyZWF0ZShX
VEZNb3ZlKHByb3ZpZGVyKSkucHRyKCkpOwogfQogCiArICh2b2lkKXJlbW92ZUltYWdlRnJvbUNh
Y2hlRm9yVVJMOihOU1VSTCAqKXVybApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAj
aW1wb3J0ICJET01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJQYWdlU3RvcmFnZVNlc3Npb25Q
cm92aWRlci5oIgogI2ltcG9ydCAiU3RvcmFnZVRocmVhZC5oIgogI2ltcG9ydCAiV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgiCiAjaW1wb3J0ICJXZWJBcHBsaWNhdGlvbkNhY2hlSW50ZXJuYWwu
aCIKQEAgLTE0NDAsNiArMTQ0MSw3IEBACiAgICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dy
b3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2Vs
Zik7CiAKKyAgICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyOjpjcmVhdGUoKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbigK
ICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpLAogICAgICAgICBT
b2NrZXRQcm92aWRlcjo6Y3JlYXRlKCksCkBAIC0xNDQ2LDcgKzE0NDgsNyBAQAogICAgICAgICBM
aWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIFdlYkNvcmU6OkNhY2hlU3RvcmFn
ZVByb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUoc2Vs
ZiksCi0gICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKCkKKyAgICAgICAgQ29va2llSmFyOjpjcmVh
dGUoc3RvcmFnZVByb3ZpZGVyLmNvcHlSZWYoKSkKICAgICApOwogI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJv
bWVDbGllbnQoc2VsZik7CkBAIC0xNDc3LDYgKzE0NzksNyBAQAogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSAmX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3JlID0gJl9w
cml2YXRlLT5ncm91cC0+dmlzaXRlZExpbmtTdG9yZSgpOwogICAgIF9wcml2YXRlLT5wYWdlID0g
bmV3IFBhZ2UoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIHN0b3JhZ2VQcm92aWRl
ci0+c2V0UGFnZSgqX3ByaXZhdGUtPnBhZ2UpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldEdy
b3VwTmFtZShncm91cE5hbWUpOwogCkBAIC0xNzA2LDYgKzE3MDksNyBAQAogICAgIF9wcml2YXRl
LT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+
cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3ByaXZhdGUtPmdy
b3VwLT5hZGRXZWJWaWV3KHNlbGYpOwogCisgICAgYXV0byBzdG9yYWdlUHJvdmlkZXIgPSBQYWdl
U3RvcmFnZVNlc3Npb25Qcm92aWRlcjo6Y3JlYXRlKCk7CiAgICAgUGFnZUNvbmZpZ3VyYXRpb24g
cGFnZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50
PihzZWxmKSwKICAgICAgICAgU29ja2V0UHJvdmlkZXI6OmNyZWF0ZSgpLApAQCAtMTcxMiw3ICsx
NzE2LDcgQEAKICAgICAgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBX
ZWJDb3JlOjpDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIEJhY2tGb3J3
YXJkTGlzdDo6Y3JlYXRlKHNlbGYpLAotICAgICAgICBDb29raWVKYXI6OmNyZWF0ZSgpCisgICAg
ICAgIENvb2tpZUphcjo6Y3JlYXRlKHN0b3JhZ2VQcm92aWRlci5jb3B5UmVmKCkpCiAgICAgKTsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50
SU9TKHNlbGYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0xNzM0LDYgKzE3MzgsNyBA
QAogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBsdWdpbkluZm9Qcm92aWRlciA9ICZXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFn
ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgc3RvcmFnZVByb3ZpZGVyLT5zZXRQ
YWdlKCpfcHJpdmF0ZS0+cGFnZSk7CiAgICAgCiAgICAgW3NlbGYgc2V0U21hcnRJbnNlcnREZWxl
dGVFbmFibGVkOllFU107CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wMS0xNiAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNpbmcgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAg
ICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisKIDIwMTktMDEtMTUgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSAiRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5oIgor
I2luY2x1ZGUgIlBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiV2ViQXBwbGlj
YXRpb25DYWNoZS5oIgpAQCAtMzEwNiw2ICszMTA3LDcgQEAKIAogICAgIG1faW5zcGVjdG9yQ2xp
ZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudCh0aGlzKTsKIAorICAgIGF1dG8gc3RvcmFnZVBy
b3ZpZGVyID0gUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI6OmNyZWF0ZSgpOwogICAgIFBhZ2VD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24oCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViRWRp
dG9yQ2xpZW50Pih0aGlzKSwKICAgICAgICAgU29ja2V0UHJvdmlkZXI6OmNyZWF0ZSgpLApAQCAt
MzExMiw3ICszMTE0LDcgQEAKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRl
cj4oKSwKICAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAog
ICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgpLAotICAgICAgICBDb29raWVKYXI6OmNy
ZWF0ZSgpCisgICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKHN0b3JhZ2VQcm92aWRlci5jb3B5UmVm
KCkpCiAgICAgKTsKICAgICBjb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJv
bWVDbGllbnQodGhpcyk7CiAgICAgY29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5l
dyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsKQEAgLTMxMjgsNiArMzEzMCw3IEBACiAgICAg
Y29uZmlndXJhdGlvbi5wbHVnaW5JbmZvUHJvdmlkZXIgPSAmV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
OjpzaW5nbGV0b24oKTsKIAogICAgIG1fcGFnZSA9IG5ldyBQYWdlKFdURk1vdmUoY29uZmlndXJh
dGlvbikpOworICAgIHN0b3JhZ2VQcm92aWRlci0+c2V0UGFnZSgqcGFnZSk7CiAgICAgcHJvdmlk
ZUdlb2xvY2F0aW9uVG8obV9wYWdlLCAqbmV3IFdlYkdlb2xvY2F0aW9uQ2xpZW50KHRoaXMpKTsK
IAogICAgIG1fcGFnZS0+YWRkTGF5b3V0TWlsZXN0b25lcyh7IERpZEZpcnN0TGF5b3V0LCBEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359358</attachid>
            <date>2019-01-16 23:58:10 -0800</date>
            <delta_ts>2019-01-17 00:17:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193529-20190116235810.patch</filename>
            <type>text/plain</type>
            <size>62251</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE93bmVyc2hpcCBvZiB0
aGUgbWFwIHRoYXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBzZWFyY2hl
cyBuZWVkcyB0byBtb3ZlIHRvIHRoZSBXZWJLaXQvV2ViS2l0TGVnYWN5IGxheWVyLAorICAgICAg
ICBzbyB3aGVuIFdlYkNvcmUgdXNlZCB0byBsb29rIGluIHRoaXMgbWFwIGl0IG5lZWRzIHRvIGNh
bGwgYSBjbGllbnQgZnVuY3Rpb24gdG8gYXNrIHRoZSBsYXllciBhYm92ZSBpdCBmb3IgdGhlIHN0
b3JhZ2Ugb2JqZWN0LgorICAgICAgICBJJ3ZlIGNhbGxlZCB0aGlzIGNsaWVudCBTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyOjpzdG9yYWdlU2Vzc2lvbi4gIFJpZ2h0IG5vdyBpdCBqdXN0IGxvb2tzIGlu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24sCisgICAgICAgIGJ1dCB0aGlz
IGFkZGVkIGFic3RyYWN0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1vdmUgdGhlIGN1cnJlbnRs
eSBwcm9jZXNzLWdsb2JhbCBtYXAgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIE5ldHdvcmtQcm9jZXNz
IG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Q29va2llSmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzRW5h
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Nv
Y2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFByb3ZpZGVyOjpjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZURhdGFGb3JIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjp+U3RvcmFnZVNlc3Npb25Qcm92aWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0
cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Z2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSk6CisKIDIwMTktMDEtMTYgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVcGRh
dGUgdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIHRvIGFjdHVhbGx5IHVzZSB2ZXJ0
ZXggYnVmZmVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEyMyw3ICsx
MjQsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMCiAgICAgICAg
IFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQgPSBwYWdlID8gcGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwogICAgICAgICBTdHJpbmcgcGFydGl0aW9uID0gbV9kb2N1bWVudC0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKLSAgICAgICAgbV9oYW5kbGUgPSBtX3NvY2tldFByb3Zp
ZGVyLT5jcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUobV9oYW5kc2hha2UtPnVybCgpLCAqdGhpcywg
c2Vzc2lvbklELCBwYXJ0aXRpb24pOworICAgICAgICBtX2hhbmRsZSA9IG1fc29ja2V0UHJvdmlk
ZXItPmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShtX2hhbmRzaGFrZS0+dXJsKCksICp0aGlzLCBz
ZXNzaW9uSUQsIHBhcnRpdGlvbiwgZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAy
LDYgKzE5MDIsNyBAQAogCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4
dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsgfTsK
IAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QjQxOTFB
RUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzdDODhE
ODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBT
b2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTVDOUVGMkYzMjFGMDYxOTAwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlF
RjJGMjIxRjA2MTcxMDAzQkRDNTYgLyogU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQTFERUM2MUY3MUYx
QzcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTFERUM0MUY3MUU2ODcwMEU3MUJEMyAvKiBIVFRQSGVh
ZGVyRmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1Q0IzN0ZGRjFDNjJEMkExMDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzN0ZGRDFDNjJE
Mjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggKi87IH07CiAJCTVDQkM4REFEMUFB
QTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzhEQUIxQUFBMzAyMjAwRTFD
ODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmggKi87IH07CkBAIC04OTA4LDYgKzg5
MDksNyBAQAogCQk1QzlCODYwQjFDMjFFM0M2MDAxMTBGMzYgLyogTmV0d29ya0xvYWRNZXRyaWNz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0xvYWRN
ZXRyaWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFRjE2RjFERkY3MTk5
MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFhQYXRoR3JhbW1hci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDOUVGMTcwMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWFBhdGhHcmFtbWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDOUVGMkYyMjFGMDYxNzEwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMURFQzIxRjcxRTY4NjAw
RTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIVFRQSGVhZGVyRmllbGQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUVFBIZWFkZXJGaWVsZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Q0IzN0ZGQzFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5p
bWF0b3JNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9s
bEFuaW1hdG9yTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTkzNSw2
ICsxOTkzNyw3IEBACiAJCQkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZS5oICovLAogCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCAqLywKIAkJCQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi8sCisJCQkJNUM5RUYyRjIyMUYwNjE3MTAwM0JEQzU2
IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk0NjgyRDFGRjFGNzk3ODIzMDBD
ODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLywKIAkJCQlFMTgwODExMDE2RkNG
NDJFMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUUxODA4
MTE1MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oICovLApAQCAt
MzE1NDAsNiArMzE1NDMsNyBAQAogCQkJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9y
YWdlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTBEMEU4MzBGRjQyNzI5MDBBQzI2NDQgLyog
U3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzNzYzNkMxQTJFNjhCQjAw
OUE3RUUyIC8qIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NUM5RUYyRjMyMUYwNjE5MDAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNjZEM0NEMUU4RUQ0OEYwMEFENjJFMyAvKiBTdG9yYWdlVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAw
QTYwMzMgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCAr
MzYsMTYgQEAKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgorI2luY2x1ZGUgIlN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1JlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRl
KFJlZjxTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKFdURk1vdmUoc3RvcmFnZVNlc3Np
b25Qcm92aWRlcikpKTsKK30KKwogSW5jbHVkZVNlY3VyZUNvb2tpZXMgQ29va2llSmFyOjpzaG91
bGRJbmNsdWRlU2VjdXJlQ29va2llcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIHJldHVybiAodXJsLnByb3RvY29sSXMoImh0dHBzIikgJiYgIWRvY3Vt
ZW50LmZvdW5kTWl4ZWRDb250ZW50KCkuY29udGFpbnMoU2VjdXJpdHlDb250ZXh0OjpNaXhlZENv
bnRlbnRUeXBlOjpBY3RpdmUpKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRl
U2VjdXJlQ29va2llczo6Tm87CkBAIC01Miw5ICs1OCw5IEBAIFNhbWVTaXRlSW5mbyBDb29raWVK
YXI6OnNhbWVTaXRlSW5mbyhjb24KICAgICByZXR1cm4geyB9OwogfQogCi1SZWY8Q29va2llSmFy
PiBDb29raWVKYXI6OmNyZWF0ZSgpCitDb29raWVKYXI6OkNvb2tpZUphcihSZWY8U3RvcmFnZVNl
c3Npb25Qcm92aWRlcj4mJiBzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKQorICAgIDogbV9zdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKFdURk1vdmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKTsKIH0KIAogQ29va2llSmFyOjp+Q29va2ll
SmFyKCkgPSBkZWZhdWx0OwpAQCAtNzMsNyArNzksNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29r
aWVzKERvY3VtZW50JiBkb2N1CiAgICAgfQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
cmVzdWx0OwotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAg
IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTEwLDI0ICsxMTYsMjQgQEAgdm9pZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9j
dW1lbnQmIGRvYwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFn
ZUlEKCk7CiAgICAgfQogCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkK
ICAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGNvb2tpZVN0cmluZyk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotYm9vbCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkgY29uc3QKK2Jvb2wgQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVu
dCYpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuIHNlc3Npb24tPmNvb2tpZXNFbmFibGVkKCk7CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0
cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKLSAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJl
c3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVz
KTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmZpcnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJl
Q29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAg
fQpAQCAtMTYwLDE2ICsxNjYsMTYgQEAgYm9vbCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29u
c3QgRG9jdQogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlE
KCk7CiAgICAgfQogCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuIHNlc3Npb24tPmdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGNvb2tpZXMpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIENvb2tpZUphcjo6ZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgQ29v
a2llSmFyOjpkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VT
ZXNzaW9uKCkpCiAgICAgICAgIHNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUp
OwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBQQUwg
ewpAQCAtNDAsMTEgKzQxLDEzIEBAIGVudW0gY2xhc3MgU2VjdXJlQ29va2llc0FjY2Vzc2VkIDog
Ym9vbCAKIGNsYXNzIERvY3VtZW50Owogc3RydWN0IENvb2tpZTsKIHN0cnVjdCBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eTsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2NsYXNz
IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBDb29raWVKYXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDb29raWVKYXI+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvb2tpZUphcj4gY3JlYXRlKCk7CisgICAgc3RhdGlj
IFJlZjxDb29raWVKYXI+IGNyZWF0ZShSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJik7CiAg
ICAgCiAgICAgc3RhdGljIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5IGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJik7CiAKQEAgLTYz
LDYgKzY2LDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgU2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbyhjb25zdCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyBJbmNsdWRlU2VjdXJl
Q29va2llcyBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFVSTCYpOworICAgIENvb2tpZUphcihSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJik7CisK
K3ByaXZhdGU6CisgICAgUmVmPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Np
b25Qcm92aWRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDYg
KzUzNSwxMCBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAorY2xhc3Mg
RW1wdHlTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgeworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9Cit9OworCiBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29u
ZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKQogewogICAgIFBhZ2VDb25maWd1cmF0aW9uIHBh
Z2VDb25maWd1cmF0aW9uIHsKQEAgLTU0Myw3ICs1NDcsNyBAQCBQYWdlQ29uZmlndXJhdGlvbiBw
YWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGUo
KSwKICAgICAgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBhZG9w
dFJlZigqbmV3IEVtcHR5QmFja0ZvcndhcmRDbGllbnQpLAotICAgICAgICBDb29raWVKYXI6OmNy
ZWF0ZSgpCisgICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKSkKICAgICB9OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEVtcHR5Q2hyb21lQ2xpZW50PiBkdW1teUNocm9tZUNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtMTY2LDcgKzE2Nyw3IEBAIGVudW0gY2xhc3MgRGlkV3JhcCA6
IGJvb2w7CiBlbnVtIGNsYXNzIFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiAKLWNsYXNzIFBhZ2UgOiBw
dWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4geworY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVt
ZW50YWJsZTxQYWdlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFBhZ2U+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQYWdlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBm
cmllbmQgY2xhc3MgU2V0dGluZ3NCYXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Tb2Nr
ZXRQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQ
cm92aWRlci5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29j
a2V0UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFNvY2tldFByb3Zp
ZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFNvY2tl
dFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92
aWRlciogcHJvdmlkZXIpCiB7Ci0gICAgcmV0dXJuIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNy
ZWF0ZSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCB7IH0pOwor
ICAgIHJldHVybiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUodXJsLCBjbGllbnQsIHNl
c3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgeyB9LCBwcm92aWRlcik7CiB9CiAgICAgCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCShyZXZpc2lvbiAyNDAxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNv
Y2tldFN0cmVhbUhhbmRsZTsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKQEAgLTM4
LDcgKzM5LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgU29ja2V0UHJvdmlkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29j
a2V0UHJvdmlkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNvY2tldFByb3ZpZGVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFByb3ZpZGVyKTsgfQotICAgIHZp
cnR1YWwgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNv
bnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOworICAgIHZpcnR1YWwgUmVmPFNvY2tldFN0
cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRp
YWxQYXJ0aXRpb24sIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2aXJ0dWFs
IH5Tb2NrZXRQcm92aWRlcigpIHsgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI0MDEw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRl
ci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCi1jbGFzcyBO
ZXR3b3JraW5nQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtpbmdDb250ZXh0PiB7
CitjbGFzcyBOZXR3b3JraW5nQ29udGV4dCA6IHB1YmxpYyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5OZXR3b3JraW5nQ29udGV4dCgpID0gZGVmYXVsdDsK
IApAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VB
cHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAK
LSAgICB2aXJ0dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25z
dCA9IDA7Ci0KICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCA9IDA7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yOSw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIK
KyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDkgKzc4LDggQEAgc3RhdGljIHNp
emVfdCByZW1vdmVUZXJtaW5hdGlvbkNoYXJhY3RlcgogICAgIHJldHVybiBkYXRhTGVuZ3RoIC0g
MjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxWZWN0b3I8dWludDhfdD4sIGJvb2w+
PiBjb29raWVEYXRhRm9ySGFuZHNoYWtlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5JiBoZWFkZXJGaWVsZFByb3h5KQorc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxWZWN0b3I8
dWludDhfdD4sIGJvb2w+PiBjb29raWVEYXRhRm9ySGFuZHNoYWtlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiogbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkKIHsKLSAgICBhdXRvIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oaGVhZGVy
RmllbGRQcm94eS5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIApAQCAtMTAzLDcgKzEwNCw3IEBAIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW4KICAgICBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwogCiAgICAgaWYgKGhlYWRlckZpZWxkUHJveHkpIHsKLSAg
ICAgICAgYXV0byBjb29raWVEYXRhRnJvbU5ldHdvcmtTZXNzaW9uID0gY29va2llRGF0YUZvckhh
bmRzaGFrZShoZWFkZXJGaWVsZFByb3h5LnZhbHVlKCkpOworICAgICAgICBhdXRvIGNvb2tpZURh
dGFGcm9tTmV0d29ya1Nlc3Npb24gPSBjb29raWVEYXRhRm9ySGFuZHNoYWtlKG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlciA/IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24o
KSA6IG51bGxwdHIsICpoZWFkZXJGaWVsZFByb3h5KTsKICAgICAgICAgaWYgKCFjb29raWVEYXRh
RnJvbU5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSwgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgUEFMIHsKK2Ns
YXNzIFNlc3Npb25JRDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb247CisKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4geworcHVibGljOgor
ICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgflN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIoKSB7IH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCShyZXZp
c2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTIgKzQxLDEzIEBAIHR5
cGVkZWYgc3RydWN0IF9fQ0ZIVFRQTWVzc2FnZSogQ0ZIVFRQTWUKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ3JlZGVudGlhbDsKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CiAK
IGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBT
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVk
ZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8
U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYm
IGF1ZGl0RGF0YSwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc2Vz
c2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSksIHByb3ZpZGVy
KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUltcGwoKTsKIApAQCAtNTgs
NyArNTksNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kSW50
ZXJuYWwoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJM
JiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYsIGNvbnN0IFN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2b2lkIGNyZWF0ZVN0cmVhbXMoKTsKICAgICB2
b2lkIHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJveHkoKTsKQEAgLTEwMyw2
ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAg
IFN0cmluZyBtX2NyZWRlbnRpYWxQYXJ0aXRpb247CiAgICAgU291cmNlQXBwbGljYXRpb25BdWRp
dFRva2VuIG1fYXVkaXREYXRhOworICAgIFJlZlB0cjxjb25zdCBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyPiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiAKICAgICBTdHJlYW1CdWZmZXI8dWludDhf
dCwgMTAyNCAqIDEwMjQ+IG1fYnVmZmVyOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhC
dWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsQ0ZOZXQuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC05NSw3ICs5Niw3IEBAIHN0YXRpYyBpbmxpbmUgYXV0byBj
YWxsYmFja3NSdW5Mb29wTW9kZSgKICNlbmRpZgogfQogCi1Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0
RGF0YSkKK1NvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNl
QXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhLCBjb25zdCBTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyKiBwcm92aWRlcikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkK
ICAgICAsIG1fY29ubmVjdGluZ1N1YnN0YXRlKE5ldykKICAgICAsIG1fY29ubmVjdGlvblR5cGUo
VW5rbm93bikKQEAgLTEwMyw2ICsxMDQsNyBAQCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2Nr
ZXRTdHJlYW1IYW5kCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2NyZWRl
bnRpYWxQYXJ0aXRpb24oY3JlZGVudGlhbFBhcnRpdGlvbikKICAgICAsIG1fYXVkaXREYXRhKFdU
Rk1vdmUoYXVkaXREYXRhKSkKKyAgICAsIG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlcihwcm92aWRl
cikKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50
ICVwIiwgdGhpcywgJm1fY2xpZW50KTsKIApAQCAtMzY3LDcgKzM2OSw3IEBAIGJvb2wgU29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6Z2V0U3RvcmVkQ08KIAogICAgIC8vIFRyeSBzeXN0ZW0gY3JlZGVu
dGlhbCBzdG9yYWdlIGZpcnN0LCBtYXRjaGluZyBIVFRQIGJlaGF2aW9yIChDRk5ldHdvcmsgb25s
eSBhc2tzIHRoZSBjbGllbnQgZm9yIHBhc3N3b3JkIGlmIGl0IGNvdWxkbid0IGZpbmQgaXQgaW4g
S2V5Y2hhaW4pLgogICAgIENyZWRlbnRpYWwgc3RvcmVkQ3JlZGVudGlhbDsKLSAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KG1fc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fc3RvcmFn
ZVNlc3Npb25Qcm92aWRlciA/IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Np
b24oKSA6IG51bGxwdHIpIHsKICAgICAgICAgc3RvcmVkQ3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNz
aW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShwcm90ZWN0
aW9uU3BhY2UpOwogICAgICAgICBpZiAoc3RvcmVkQ3JlZGVudGlhbC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBzdG9yZWRDcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9y
YWdlKCkuZ2V0KG1fY3JlZGVudGlhbFBhcnRpdGlvbiwgcHJvdGVjdGlvblNwYWNlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXI7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFt
SGFuZGxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+
IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQs
IFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9r
ZW4mJikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVybCwg
Y2xpZW50KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwg
Y29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgcHJvdmlkZXIpKTsgfQog
CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCkBAIC01Niw3ICs1Nyw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5h
bDsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
KGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50JiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogCiAgICAgc2l6ZV90IGJ1
ZmZlcmVkQW1vdW50KCkgZmluYWw7CiAgICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJ
bnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKQEAgLTY5LDYgKzcwLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtXcml0ZUJ1ZmZlclNpemUgPSA0ICogMTAyNDsK
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtSZWFkQnVmZmVyU2l6ZSA9IDQgKiAxMDI0OwogCisg
ICAgUmVmUHRyPGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Npb25Q
cm92aWRlcjsKICAgICBSZWZQdHI8VGhyZWFkPiBtX3dvcmtlclRocmVhZDsKICAgICBzdGQ6OmF0
b21pYzxib29sPiBtX3J1bm5pbmcgeyB0cnVlIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiB1
cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50KQorU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50JiBjbGllbnQsIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqIHByb3ZpZGVyKQog
ICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQorICAgICwgbV9zdG9yYWdlU2Vz
c2lvblByb3ZpZGVyKHByb3ZpZGVyKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFt
SGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCAmbV9jbGllbnQpOwogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHJldmlzaW9u
IDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC01MSw3ICs1Miw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKIAogY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5k
bGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gY3Jl
YXRlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CisgICAgc3Rh
dGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29uc3QgVVJMJiwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKik7
CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCiAgICAgY29uc3QgVVJM
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwbGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+
JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBwbGF0Zm9y
bUNsb3NlKCkgZmluYWw7CiBwcml2YXRlOgotICAgIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29u
c3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CisgICAgU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBjb25zdCBTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKik7CiAKICAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBmaW5h
bDsKICAgICBPcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOwpAQCAtNzgsNiArNzksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmFp
bChTb2NrZXRTdHJlYW1FcnJvciYmKTsKICAgICB2b2lkIHdyaXRlUmVhZHkoKTsKIAorICAgIFJl
ZlB0cjxjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXI7CisgICAgCiAgICAgR1JlZlB0cjxHSU9TdHJlYW0+IG1fc3RyZWFtOwogICAgIEdSZWZQdHI8
R0lucHV0U3RyZWFtPiBtX2lucHV0U3RyZWFtOwogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0
U3RyZWFtPiBtX291dHB1dFN0cmVhbTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxTb3VwLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzIEx0ZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KQEAgLTQxLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1
ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJVUkxTb3VwLmgiCiAjaW5j
bHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTgxLDEyICs4MywxMiBAQCBz
dGF0aWMgdm9pZCBzb2NrZXRDbGllbnRFdmVudENhbGxiYWNrKEdTCiB9CiAjZW5kaWYKIAotUmVm
PFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZShj
b25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRv
a2VuJiYpCitSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVu
dCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRU
b2tlbiYmLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKiBzdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyKQogewotICAgIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBzb2NrZXQgPSBhZG9wdFJl
ZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQpKTsKKyAgICBSZWY8U29j
a2V0U3RyZWFtSGFuZGxlSW1wbD4gc29ja2V0ID0gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsKHVybCwgY2xpZW50LCBzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKSk7CiAKICNpZiBT
T1VQX0NIRUNLX1ZFUlNJT04oMiwgNjEsIDkwKQotICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKTsK
KyAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvblByb3ZpZGVy
ID8gc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSA6IG51bGxwdHI7CiAg
ICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBzb2NrZXQ7CiAK
QEAgLTk2LDcgKzk4LDYgQEAgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IFNvY2tldFN0cmVh
bQogICAgICAgICB1cmwucHJvdG9jb2xJcygid3NzIikgPyByZWludGVycHJldF9jYXN0PFNvdXBT
ZXNzaW9uQ29ubmVjdFByb2dyZXNzQ2FsbGJhY2s+KGNvbm5lY3RQcm9ncmVzc0NhbGxiYWNrKSA6
IG51bGxwdHIsCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4o
Y29ubmVjdGVkQ2FsbGJhY2spLCAmcHJvdGVjdGVkU29ja2V0U3RyZWFtSGFuZGxlLmxlYWtSZWYo
KSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSUQpOwogICAgIHVuc2lnbmVkIHBv
cnQgPSB1cmwucG9ydCgpID8gdXJsLnBvcnQoKS52YWx1ZSgpIDogKHVybC5wcm90b2NvbElzKCJ3
c3MiKSA/IDQ0MyA6IDgwKTsKICAgICBHUmVmUHRyPEdTb2NrZXRDbGllbnQ+IHNvY2tldENsaWVu
dCA9IGFkb3B0R1JlZihnX3NvY2tldF9jbGllbnRfbmV3KCkpOwogICAgIGlmICh1cmwucHJvdG9j
b2xJcygid3NzIikpIHsKQEAgLTExMSw4ICsxMTIsOSBAQCBSZWY8U29ja2V0U3RyZWFtSGFuZGxl
SW1wbD4gU29ja2V0U3RyZWFtCiAgICAgcmV0dXJuIHNvY2tldDsKIH0KIAotU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQpCitTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQmIGNsaWVudCwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpCiAgICAg
OiBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpCisgICAgLCBtX3N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIocHJvdmlkZXIpCiAgICAgLCBtX2NhbmNlbGxhYmxlKGFkb3B0R1JlZihnX2NhbmNl
bGxhYmxlX25ldygpKSkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAl
cCBuZXcgY2xpZW50ICVwIiwgdGhpcywgJm1fY2xpZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI2IEBACisyMDE5LTAxLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y3JlYXRlU29ja2V0U3RyZWFtKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJl
YW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpOZXR3b3JrU29ja2V0U3RyZWFt
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRk
ZWQuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZUphcjo6V2ViQ29va2llSmFyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmg6CisKIDIwMTktMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBTUEkgZm9yIGNvbnRyb2xsaW5nIGdldFVzZXJN
ZWRpYQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI0MDEwNCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHRv
a2VuID0geyBtX25ldHdvcmtQcm9jZXNzLT5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIH07
CiAjZW5kaWYKLSAgICBtX25ldHdvcmtTb2NrZXRTdHJlYW1zLnNldChpZGVudGlmaWVyLCBOZXR3
b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUoV1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQsIGNhY2hlUGFy
dGl0aW9uLCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24sIFdURk1vdmUodG9rZW4pKSk7CisgICAg
bV9uZXR3b3JrU29ja2V0U3RyZWFtcy5zZXQoaWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVh
bTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCksIFdURk1vdmUodXJsKSwgc2Vzc2lvbklE
LCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2Vu
KSkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZXN0cm95U29j
a2V0U3RyZWFtKHVpbnQ2NF90IGlkZW50aWZpZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk0LDcgKzk0LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBDYWNoZTsK
IH0KIAotY2xhc3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzLCBwcml2YXRl
IERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TmV0
d29ya1Byb2Nlc3M+CitjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3Ms
IHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxOZXR3b3JrUHJvY2Vzcz4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrUHJvY2Vz
cz4KICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpJ
REJTZXJ2ZXI6OklEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0
U3RyZWFtLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIk5ldHdvcmtTb2NrZXRTdHJlYW0uaCIKIAogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgog
I2luY2x1ZGUgIldlYlNvY2tldFN0cmVhbU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0
U3RyZWFtRXJyb3IuaD4KQEAgLTM0LDE1ICszNSwxNSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdv
cmtTb2NrZXRTdHJlYW06OmNyZWF0ZShVUkwmJiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVy
LCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tl
biYmIGF1ZGl0RGF0YSkKK1JlZjxOZXR3b3JrU29ja2V0U3RyZWFtPiBOZXR3b3JrU29ja2V0U3Ry
ZWFtOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBVUkwmJiB1cmwsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9u
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOZXR3b3JrU29ja2V0U3RyZWFtKFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjcmVk
ZW50aWFsUGFydGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0
YSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU29ja2V0U3RyZWFtKG5ldHdv
cmtQcm9jZXNzLCBXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwg
aWRlbnRpZmllciwgY29ubmVjdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpKSk7CiB9CiAKLU5ldHdv
cmtTb2NrZXRTdHJlYW06Ok5ldHdvcmtTb2NrZXRTdHJlYW0oVVJMJiYgdXJsLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0
X3QgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTb3VyY2VBcHBsaWNh
dGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpCitOZXR3b3JrU29ja2V0U3RyZWFtOjpOZXR3b3Jr
U29ja2V0U3RyZWFtKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgVVJMJiYgdXJsLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlv
biwgdWludDY0X3QgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTb3Vy
Y2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpCiAgICAgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKICAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQotICAgICwgbV9pbXBs
KFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSh1cmwsICp0aGlzLCBzZXNzaW9uSUQsIGNy
ZWRlbnRpYWxQYXJ0aXRpb24sIFdURk1vdmUoYXVkaXREYXRhKSkpCisgICAgLCBtX2ltcGwoU29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKHVybCwgKnRoaXMsIHNlc3Npb25JRCwgY3JlZGVu
dGlhbFBhcnRpdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpLCBOZXR3b3JrU3RvcmFnZVNlc3Npb25Q
cm92aWRlcjo6Y3JlYXRlKG5ldHdvcmtQcm9jZXNzLCBzZXNzaW9uSUQpLnB0cigpKSkKIHsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0U3RyZWFtLmgJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSwx
MSBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
TmV0d29ya1Byb2Nlc3M7CisKIGNsYXNzIE5ldHdvcmtTb2NrZXRTdHJlYW0gOiBwdWJsaWMgUmVm
Q291bnRlZDxOZXR3b3JrU29ja2V0U3RyZWFtPiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTb2NrZXRTdHJl
YW0+IGNyZWF0ZShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFw
cGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtTb2NrZXRTdHJl
YW0+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYsIFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwg
V2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogICAgIH5OZXR3b3JrU29j
a2V0U3RyZWFtKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwpAQCAtNjIsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIElQQzo6
Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICB1aW50NjRf
dCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsOwogCi0gICAgTmV0d29ya1NvY2tl
dFN0cmVhbShVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBh
cnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXRUb2tlbiYmKTsKKyAgICBOZXR3b3JrU29ja2V0U3RyZWFtKE5ldHdvcmtQcm9j
ZXNzJiwgVVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0
aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNh
dGlvbkF1ZGl0VG9rZW4mJik7CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgSVBD
OjpDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKG5ldHdvcmtQcm9jZXNzLCBzZXNzaW9u
SUQpKTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRl
cihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBz
ZXNzaW9uSUQpCisgICAgICAgIDogbV9uZXR3b3JrUHJvY2VzcyhtYWtlV2Vha1B0cihuZXR3b3Jr
UHJvY2VzcykpCisgICAgICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKSB7IH0KKworICAgIFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgICAgICByZXR1
cm4gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihtX3Nlc3Np
b25JRCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFdlYWtQdHI8TmV0
d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNz
aW9uSUQ7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0NDUsNiAr
MzQ0NSw3IEBACiAJCTVDOEREMzgxMUZFNDU1Q0EwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlR
dWlyay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlQXV0b3BsYXlR
dWlyay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTY4MDFERjdGMDU1MDBD
OUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tXZWJzaXRlUG9saWNpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzlFNTY4MTFERjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlUG9saWNpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM5RUYyRTcyMUYwNThGOTAwM0JEQzU2IC8qIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDQTI2RDdGMjE3QUJCQjYwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dh
cm5pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NhZmVC
cm93c2luZ1dhcm5pbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQTI2RDgw
MjE3QUJCQjYwMEY5N0EzNSAvKiBXS1NhZmVCcm93c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDQTk4NTQ5MjEwQkVCNUEwMDU3RUI2QiAvKiBTYWZlQnJvd3Np
bmdXYXJuaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhZmVCcm93c2lu
Z1dhcm5pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0MzksNiArNjQ0MCw3
IEBACiAJCQkJNUMwQjE3N0QxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0u
Y3BwICovLAogCQkJCTVDMEIxNzdFMUU3Qzg4NjcwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3Ry
ZWFtLmggKi8sCiAJCQkJNUMwQjE3N0YxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRT
dHJlYW0ubWVzc2FnZXMuaW4gKi8sCisJCQkJNUM5RUYyRTcyMUYwNThGOTAwM0JEQzU2IC8qIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi8sCiAJCQkJNDYyMTA3RDcxRjM4REJEMzAw
REQ3ODEwIC8qIFBpbmdMb2FkLmNwcCAqLywKIAkJCQk1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0Ug
LyogUGluZ0xvYWQuaCAqLywKIAkJCQk4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIgLyogUHJlY29u
bmVjdFRhc2suY3BwICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0UHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBXZWJTb2NrZXRQ
cm92aWRlcjo6Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pCitSZWY8U29ja2V0U3RyZWFtSGFuZGxlPiBX
ZWJTb2NrZXRQcm92aWRlcjo6Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGNvbnN0IFN0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIqKQogewogICAgIHJldHVybiBXZWJTb2NrZXRTdHJlYW06OmNyZWF0ZSh1cmws
IGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIu
aAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0UHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlNvY2tldFByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OlNvY2tldFByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlNvY2tl
dFByb3ZpZGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNvY2tldFByb3Zp
ZGVyKTsgfQotICAgIFJlZjxXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZVNvY2tl
dFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uKSBm
aW5hbDsKKyAgICBSZWY8V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVTb2NrZXRT
dHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29u
c3QgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciopIGZpbmFsOwogICAgIHZpcnR1YWwg
fldlYlNvY2tldFByb3ZpZGVyKCkgeyB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAJKHJldmlzaW9uIDI0MDEwNCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDE4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgeworICAgIC8v
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbnMgYXJlIGFjY2Vzc2VkIG9ubHkgaW4gdGhlIE5ldHdvcmtQ
cm9jZXNzLgorICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Np
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Cit9OworCitXZWJDb29raWVKYXI6
OldlYkNvb2tpZUphcigpCisgICAgOiBXZWJDb3JlOjpDb29raWVKYXIoYWRvcHRSZWYoKm5ldyBX
ZWJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKSkgeyB9CisKIFN0cmluZyBXZWJDb29raWVKYXI6OmNv
b2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QK
IHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCShyZXZpc2lvbiAyNDAxMDQp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksOCBAQCBwdWJsaWM6CiAgICAgc3RkOjpwYWlyPFN0cmlu
ZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2Vi
Q29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSBmaW5hbDsKK3ByaXZhdGU6
CisgICAgV2ViQ29va2llSmFyKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTE2
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
U3RvcCB1c2luZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNv
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDEtMDQg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENTUCB2aW9sYXRp
b24gcmVwb3J0cyBzaG91bGQgYnlwYXNzIENTUCBjaGVja3MKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworY2xhc3Mg
UGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFn
ZVNlc3Npb25Qcm92aWRlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQYWdlU3RvcmFnZVNl
c3Npb25Qcm92aWRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlU3RvcmFn
ZVNlc3Npb25Qcm92aWRlcik7IH0KKworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biogc3RvcmFnZVNlc3Npb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcGFnZSkKKyAg
ICAgICAgICAgIHJldHVybiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VT
ZXNzaW9uKG1fcGFnZS0+c2Vzc2lvbklEKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICB2b2lkIHNldFBhZ2UoV2ViQ29yZTo6UGFnZSYgcGFnZSkKKyAgICB7CisgICAg
ICAgIG1fcGFnZSA9IG1ha2VXZWFrUHRyKHBhZ2UpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBX
ZWFrUHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcs
NyBAQAogCQk1OThBRDkyODEyMDFDRjMyMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlck1vY2subW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OThBRDkyNzEyMDFDRjMyMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92
aWRlck1vY2subW0gKi87IH07CiAJCTU5OEFEOTJBMTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OThBRDkyOTEyMDFDRjNCMDBBQkFFNEUgLyogV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oICovOyB9OwogCQk1OThBREE0
NjEyMDIyNzUwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QURBNDUxMjAyMjc1
MDAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1QzlFRjJGNTIxRjA2MUJFMDAz
QkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUVGMkY0MjFGMDYxQkUwMDNCREM1NiAvKiBQ
YWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovOyB9OwogCQk1Q0U0NEY0QTIwNkQ3MEVBMDAz
RUZEMDEgLyogUGluZ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNFNDRGNDkyMDZENzBFOTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCAqLzsg
fTsKIAkJNUQ3QkY4MTQwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ3QkY4MTIwQzJBMUQ5MDAw
OENFMDZEIC8qIFdlYkluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTVEN0JGODE1MEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0
b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDdC
RjgxMzBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovOyB9OwpAQCAtOTg2LDYg
Kzk4Nyw3IEBACiAJCTU5OEFEOTI3MTIwMUNGMzIwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyTW9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1OThBRDkyOTEyMDFDRjNCMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2tJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5OEFEQTQ1MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUM5RUYyRjQyMUYwNjFCRTAwM0JEQzU2IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBhZ2VTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyLmg7IHBhdGggPSBXZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92
aWRlci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTVDRTQ0RjQ5MjA2RDcwRTkw
MDNFRkQwMSAvKiBQaW5nSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFBpbmdIYW5kbGUuaDsgcGF0aCA9IFdlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyogV2Vi
SW5zcGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QkY4MTMwQzJBMUQ5MDAwOENF
MDZEIC8qIFdlYkluc3BlY3Rvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJJbnNwZWN0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NTU0LDYgKzI1NTYsNyBAQAogCQkJCUExMEMxRDQ0MTgyMDJGRkIwMDM2ODgzQSAvKiBpb3MgKi8s
CiAJCQkJQjgyOTU4RDExMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovLAog
CQkJCUI4Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8sCisJ
CQkJNUM5RUYyRjQyMUYwNjFCRTAwM0JEQzU2IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LmggKi8sCiAJCQkJNUNFNDRGNDkyMDZENzBFOTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCAqLywK
IAkJCQk3QzAxQ0I4MTE3MzQzNUM5MDBDNUQ4MDcgLyogUG9wdXBNZW51TWFjLmggKi8sCiAJCQkJ
N0MwMUNCODIxNzM0MzVDOTAwQzVEODA3IC8qIFBvcHVwTWVudU1hYy5tbSAqLywKQEAgLTI5MzQs
NiArMjkzNyw3IEBACiAJCQkJRTE1MzFCRDgyMTg3Qjk1NDAwMkUzRjgxIC8qIE5TVVJMRG93bmxv
YWRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzNzlCMUQ1N0FCRUYwMEFCODVFQSAvKiBP
YmpDRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3OUQxRDU3QUJFRjAw
QUI4NUVBIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
QzlFRjJGNTIxRjA2MUJFMDAzQkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDRTQ0RjRBMjA2RDcwRUEwMDNFRkQwMSAvKiBQaW5nSGFuZGxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTBDMUQ1RjE4MjAzMDBFMDAzNjg4M0EgLyogUG9wdXBN
ZW51SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAxQ0I4NTE3MzQzNUM5MDBDNUQ4MDcgLyog
UG9wdXBNZW51TWFjLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE5LTAxLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJDYWNo
ZS5tbToKKyAgICAgICAgKCtbV2ViQ2FjaGUgYWRkSW1hZ2VUb0NhY2hlOmZvclVSTDpmb3JGcmFt
ZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcg
X2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTpmcmFtZTpwcmVmZXJl
bmNlczpncm91cE5hbWU6XSk6CisKIDIwMTktMDEtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQkocmV2aXNpb24gMjQwMTA0KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oPgogI2lt
cG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTUw
LDYgKzUxLDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KICNlbmRp
ZgogCitjbGFzcyBEZWZhdWx0U3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1YmxpYyBXZWJDb3Jl
OjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biAmV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKKyAgICB9Cit9OworCiBAaW1wbGVtZW50YXRpb24gV2ViQ2FjaGUKIAogKyAodm9pZClpbml0
aWFsaXplCkBAIC0xNjUsNyArMTczLDggQEAgKyAoYm9vbClhZGRJbWFnZVRvQ2FjaGU6KENHSW1h
Z2VSZWYpaW1hZwogICAgIGlmICghaW1hZ2UgfHwgIXVybCB8fCAhW1t1cmwgYWJzb2x1dGVTdHJp
bmddIGxlbmd0aF0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuYWRkSW1hZ2VUb0NhY2hlKFJldGFpblB0cjxDR0lt
YWdlUmVmPihpbWFnZSksIHVybCwgZnJhbWUgPyBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5U3RyaW5nKCksIFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCksIFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKCkucHRyKCkpOwor
ICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IERlZmF1bHRTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmFk
ZEltYWdlVG9DYWNoZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4oaW1hZ2UpLCB1cmwsIGZyYW1lID8g
Y29yZShmcmFtZSktPmRvY3VtZW50KCktPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgOiBlbXB0
eVN0cmluZygpLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXZWJDb3JlOjpD
b29raWVKYXI6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkucHRyKCkpOwogfQogCiArICh2b2lk
KXJlbW92ZUltYWdlRnJvbUNhY2hlRm9yVVJMOihOU1VSTCAqKXVybApJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjQwMTA0KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
Tm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJQ
YWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIgogI2ltcG9ydCAiU3RvcmFnZVRocmVhZC5oIgog
I2ltcG9ydCAiV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgiCiAjaW1wb3J0ICJXZWJBcHBsaWNh
dGlvbkNhY2hlSW50ZXJuYWwuaCIKQEAgLTE0NDAsMTMgKzE0NDEsMTQgQEAgLSAodm9pZClfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZp
ZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xv
Y2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3ByaXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3
KHNlbGYpOwogCisgICAgYXV0byBzdG9yYWdlUHJvdmlkZXIgPSBQYWdlU3RvcmFnZVNlc3Npb25Q
cm92aWRlcjo6Y3JlYXRlKCk7CiAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRp
b24oCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50PihzZWxmKSwKICAgICAg
ICAgU29ja2V0UHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBMaWJXZWJSVENQcm92aWRlcjo6
Y3JlYXRlKCksCiAgICAgICAgIFdlYkNvcmU6OkNhY2hlU3RvcmFnZVByb3ZpZGVyOjpjcmVhdGUo
KSwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUoc2VsZiksCi0gICAgICAgIENvb2tp
ZUphcjo6Y3JlYXRlKCkKKyAgICAgICAgQ29va2llSmFyOjpjcmVhdGUoc3RvcmFnZVByb3ZpZGVy
LmNvcHlSZWYoKSkKICAgICApOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHBhZ2VD
b25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZik7CkBA
IC0xNDc3LDYgKzE0NzksNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFt
ZU5hCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9ICZfcHJpdmF0
ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpOwogICAgIHBhZ2VDb25maWd1cmF0aW9u
LnZpc2l0ZWRMaW5rU3RvcmUgPSAmX3ByaXZhdGUtPmdyb3VwLT52aXNpdGVkTGlua1N0b3JlKCk7
CiAgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CisgICAgc3RvcmFnZVByb3ZpZGVyLT5zZXRQYWdlKCpfcHJpdmF0ZS0+cGFnZSk7CiAKICAg
ICBfcHJpdmF0ZS0+cGFnZS0+c2V0R3JvdXBOYW1lKGdyb3VwTmFtZSk7CiAKQEAgLTE3MDYsMTMg
KzE3MDksMTQgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAg
IF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBf
cHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3By
aXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwogCisgICAgYXV0byBzdG9yYWdlUHJvdmlk
ZXIgPSBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlcjo6Y3JlYXRlKCk7CiAgICAgUGFnZUNvbmZp
Z3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViRWRp
dG9yQ2xpZW50PihzZWxmKSwKICAgICAgICAgU29ja2V0UHJvdmlkZXI6OmNyZWF0ZSgpLAogICAg
ICAgICBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIFdlYkNvcmU6OkNhY2hl
U3RvcmFnZVByb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0OjpjcmVh
dGUoc2VsZiksCi0gICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKCkKKyAgICAgICAgQ29va2llSmFy
OjpjcmVhdGUoc3RvcmFnZVByb3ZpZGVyLmNvcHlSZWYoKSkKICAgICApOwogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE3MzQsNiArMTczOCw3IEBAIC0gKGlkKWluaXRT
aW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE4KICAgICBwYWdlQ29uZmlndXJhdGlvbi5wbHVn
aW5JbmZvUHJvdmlkZXIgPSAmV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24oKTsKIAog
ICAgIF9wcml2YXRlLT5wYWdlID0gbmV3IFBhZ2UoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikp
OworICAgIHN0b3JhZ2VQcm92aWRlci0+c2V0UGFnZSgqX3ByaXZhdGUtPnBhZ2UpOwogICAgIAog
ICAgIFtzZWxmIHNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDpZRVNdOwogICAgIApJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Np
b24gaW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmluaXRXaXRoRnJhbWUpOgor
CiAyMDE5LTAxLTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVkdWNlIHVzZSBvZiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJET01Db3Jl
Q2xhc3Nlcy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKKyNpbmNsdWRlICJQYWdlU3RvcmFnZVNlc3Npb25Q
cm92aWRlci5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUGx1Z2lu
Vmlldy5oIgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGUuaCIKQEAgLTMxMDYsMTMgKzMx
MDcsMTQgQEAgSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1QgZnJhbQogCiAgICAg
bV9pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpOwogCisgICAg
YXV0byBzdG9yYWdlUHJvdmlkZXIgPSBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlcjo6Y3JlYXRl
KCk7CiAgICAgUGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbigKICAgICAgICAgbWFrZVVu
aXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHRoaXMpLAogICAgICAgICBTb2NrZXRQcm92aWRlcjo6
Y3JlYXRlKCksCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+KCksCiAg
ICAgICAgIFdlYkNvcmU6OkNhY2hlU3RvcmFnZVByb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAg
QmFja0ZvcndhcmRMaXN0OjpjcmVhdGUoKSwKLSAgICAgICAgQ29va2llSmFyOjpjcmVhdGUoKQor
ICAgICAgICBDb29raWVKYXI6OmNyZWF0ZShzdG9yYWdlUHJvdmlkZXIuY29weVJlZigpKQogICAg
ICk7CiAgICAgY29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50
KHRoaXMpOwogICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29u
dGV4dE1lbnVDbGllbnQodGhpcyk7CkBAIC0zMTI4LDYgKzMxMzAsNyBAQCBIUkVTVUxUIFdlYlZp
ZXc6OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtCiAgICAgY29uZmlndXJhdGlvbi5wbHVnaW5JbmZv
UHJvdmlkZXIgPSAmV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24oKTsKIAogICAgIG1f
cGFnZSA9IG5ldyBQYWdlKFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgIHN0b3JhZ2VQcm92
aWRlci0+c2V0UGFnZSgqcGFnZSk7CiAgICAgcHJvdmlkZUdlb2xvY2F0aW9uVG8obV9wYWdlLCAq
bmV3IFdlYkdlb2xvY2F0aW9uQ2xpZW50KHRoaXMpKTsKIAogICAgIG1fcGFnZS0+YWRkTGF5b3V0
TWlsZXN0b25lcyh7IERpZEZpcnN0TGF5b3V0LCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359360</attachid>
            <date>2019-01-17 00:18:00 -0800</date>
            <delta_ts>2019-01-17 00:28:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193529-20190117001759.patch</filename>
            <type>text/plain</type>
            <size>61544</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE93bmVyc2hpcCBvZiB0
aGUgbWFwIHRoYXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBzZWFyY2hl
cyBuZWVkcyB0byBtb3ZlIHRvIHRoZSBXZWJLaXQvV2ViS2l0TGVnYWN5IGxheWVyLAorICAgICAg
ICBzbyB3aGVuIFdlYkNvcmUgdXNlZCB0byBsb29rIGluIHRoaXMgbWFwIGl0IG5lZWRzIHRvIGNh
bGwgYSBjbGllbnQgZnVuY3Rpb24gdG8gYXNrIHRoZSBsYXllciBhYm92ZSBpdCBmb3IgdGhlIHN0
b3JhZ2Ugb2JqZWN0LgorICAgICAgICBJJ3ZlIGNhbGxlZCB0aGlzIGNsaWVudCBTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyOjpzdG9yYWdlU2Vzc2lvbi4gIFJpZ2h0IG5vdyBpdCBqdXN0IGxvb2tzIGlu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24sCisgICAgICAgIGJ1dCB0aGlz
IGFkZGVkIGFic3RyYWN0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1vdmUgdGhlIGN1cnJlbnRs
eSBwcm9jZXNzLWdsb2JhbCBtYXAgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIE5ldHdvcmtQcm9jZXNz
IG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Q29va2llSmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzRW5h
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Nv
Y2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFByb3ZpZGVyOjpjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZURhdGFGb3JIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjp+U3RvcmFnZVNlc3Npb25Qcm92aWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0
cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Z2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSk6CisKIDIwMTktMDEtMTYgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVcGRh
dGUgdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIHRvIGFjdHVhbGx5IHVzZSB2ZXJ0
ZXggYnVmZmVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEyMyw3ICsx
MjQsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMCiAgICAgICAg
IFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQgPSBwYWdlID8gcGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwogICAgICAgICBTdHJpbmcgcGFydGl0aW9uID0gbV9kb2N1bWVudC0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKLSAgICAgICAgbV9oYW5kbGUgPSBtX3NvY2tldFByb3Zp
ZGVyLT5jcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUobV9oYW5kc2hha2UtPnVybCgpLCAqdGhpcywg
c2Vzc2lvbklELCBwYXJ0aXRpb24pOworICAgICAgICBtX2hhbmRsZSA9IG1fc29ja2V0UHJvdmlk
ZXItPmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShtX2hhbmRzaGFrZS0+dXJsKCksICp0aGlzLCBz
ZXNzaW9uSUQsIHBhcnRpdGlvbiwgZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAy
LDYgKzE5MDIsNyBAQAogCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4
dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsgfTsK
IAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QjQxOTFB
RUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzdDODhE
ODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBT
b2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTVDOUVGMkYzMjFGMDYxOTAwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlF
RjJGMjIxRjA2MTcxMDAzQkRDNTYgLyogU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQTFERUM2MUY3MUYx
QzcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTFERUM0MUY3MUU2ODcwMEU3MUJEMyAvKiBIVFRQSGVh
ZGVyRmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1Q0IzN0ZGRjFDNjJEMkExMDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzN0ZGRDFDNjJE
Mjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggKi87IH07CiAJCTVDQkM4REFEMUFB
QTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzhEQUIxQUFBMzAyMjAwRTFD
ODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmggKi87IH07CkBAIC04OTA4LDYgKzg5
MDksNyBAQAogCQk1QzlCODYwQjFDMjFFM0M2MDAxMTBGMzYgLyogTmV0d29ya0xvYWRNZXRyaWNz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0xvYWRN
ZXRyaWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFRjE2RjFERkY3MTk5
MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFhQYXRoR3JhbW1hci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDOUVGMTcwMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWFBhdGhHcmFtbWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDOUVGMkYyMjFGMDYxNzEwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMURFQzIxRjcxRTY4NjAw
RTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIVFRQSGVhZGVyRmllbGQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUVFBIZWFkZXJGaWVsZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Q0IzN0ZGQzFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5p
bWF0b3JNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9s
bEFuaW1hdG9yTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTkzNSw2
ICsxOTkzNyw3IEBACiAJCQkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZS5oICovLAogCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCAqLywKIAkJCQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi8sCisJCQkJNUM5RUYyRjIyMUYwNjE3MTAwM0JEQzU2
IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk0NjgyRDFGRjFGNzk3ODIzMDBD
ODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLywKIAkJCQlFMTgwODExMDE2RkNG
NDJFMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUUxODA4
MTE1MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oICovLApAQCAt
MzE1NDAsNiArMzE1NDMsNyBAQAogCQkJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9y
YWdlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTBEMEU4MzBGRjQyNzI5MDBBQzI2NDQgLyog
U3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzNzYzNkMxQTJFNjhCQjAw
OUE3RUUyIC8qIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NUM5RUYyRjMyMUYwNjE5MDAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNjZEM0NEMUU4RUQ0OEYwMEFENjJFMyAvKiBTdG9yYWdlVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAw
QTYwMzMgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCAr
MzYsMTYgQEAKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgorI2luY2x1ZGUgIlN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1JlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRl
KFJlZjxTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKFdURk1vdmUoc3RvcmFnZVNlc3Np
b25Qcm92aWRlcikpKTsKK30KKwogSW5jbHVkZVNlY3VyZUNvb2tpZXMgQ29va2llSmFyOjpzaG91
bGRJbmNsdWRlU2VjdXJlQ29va2llcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIHJldHVybiAodXJsLnByb3RvY29sSXMoImh0dHBzIikgJiYgIWRvY3Vt
ZW50LmZvdW5kTWl4ZWRDb250ZW50KCkuY29udGFpbnMoU2VjdXJpdHlDb250ZXh0OjpNaXhlZENv
bnRlbnRUeXBlOjpBY3RpdmUpKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRl
U2VjdXJlQ29va2llczo6Tm87CkBAIC01Miw5ICs1OCw5IEBAIFNhbWVTaXRlSW5mbyBDb29raWVK
YXI6OnNhbWVTaXRlSW5mbyhjb24KICAgICByZXR1cm4geyB9OwogfQogCi1SZWY8Q29va2llSmFy
PiBDb29raWVKYXI6OmNyZWF0ZSgpCitDb29raWVKYXI6OkNvb2tpZUphcihSZWY8U3RvcmFnZVNl
c3Npb25Qcm92aWRlcj4mJiBzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKQorICAgIDogbV9zdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKFdURk1vdmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKTsKIH0KIAogQ29va2llSmFyOjp+Q29va2ll
SmFyKCkgPSBkZWZhdWx0OwpAQCAtNzMsNyArNzksNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29r
aWVzKERvY3VtZW50JiBkb2N1CiAgICAgfQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
cmVzdWx0OwotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAg
IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTEwLDI0ICsxMTYsMjQgQEAgdm9pZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9j
dW1lbnQmIGRvYwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFn
ZUlEKCk7CiAgICAgfQogCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkK
ICAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGNvb2tpZVN0cmluZyk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotYm9vbCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkgY29uc3QKK2Jvb2wgQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVu
dCYpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuIHNlc3Npb24tPmNvb2tpZXNFbmFibGVkKCk7CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0
cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKLSAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJl
c3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVz
KTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmZpcnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJl
Q29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAg
fQpAQCAtMTYwLDE2ICsxNjYsMTYgQEAgYm9vbCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29u
c3QgRG9jdQogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlE
KCk7CiAgICAgfQogCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuIHNlc3Npb24tPmdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGNvb2tpZXMpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIENvb2tpZUphcjo6ZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgQ29v
a2llSmFyOjpkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VT
ZXNzaW9uKCkpCiAgICAgICAgIHNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUp
OwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBQQUwg
ewpAQCAtNDAsMTEgKzQxLDEzIEBAIGVudW0gY2xhc3MgU2VjdXJlQ29va2llc0FjY2Vzc2VkIDog
Ym9vbCAKIGNsYXNzIERvY3VtZW50Owogc3RydWN0IENvb2tpZTsKIHN0cnVjdCBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eTsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2NsYXNz
IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBDb29raWVKYXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDb29raWVKYXI+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvb2tpZUphcj4gY3JlYXRlKCk7CisgICAgc3RhdGlj
IFJlZjxDb29raWVKYXI+IGNyZWF0ZShSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJik7CiAg
ICAgCiAgICAgc3RhdGljIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5IGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJik7CiAKQEAgLTYz
LDYgKzY2LDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgU2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbyhjb25zdCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyBJbmNsdWRlU2VjdXJl
Q29va2llcyBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFVSTCYpOworICAgIENvb2tpZUphcihSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJik7CisK
K3ByaXZhdGU6CisgICAgUmVmPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Np
b25Qcm92aWRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDYg
KzUzNSwxMCBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAorY2xhc3Mg
RW1wdHlTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgeworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9Cit9OworCiBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29u
ZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKQogewogICAgIFBhZ2VDb25maWd1cmF0aW9uIHBh
Z2VDb25maWd1cmF0aW9uIHsKQEAgLTU0Myw3ICs1NDcsNyBAQCBQYWdlQ29uZmlndXJhdGlvbiBw
YWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGUo
KSwKICAgICAgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBhZG9w
dFJlZigqbmV3IEVtcHR5QmFja0ZvcndhcmRDbGllbnQpLAotICAgICAgICBDb29raWVKYXI6OmNy
ZWF0ZSgpCisgICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKSkKICAgICB9OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEVtcHR5Q2hyb21lQ2xpZW50PiBkdW1teUNocm9tZUNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtMTY2LDcgKzE2Nyw3IEBAIGVudW0gY2xhc3MgRGlkV3JhcCA6
IGJvb2w7CiBlbnVtIGNsYXNzIFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiAKLWNsYXNzIFBhZ2UgOiBw
dWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4geworY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVt
ZW50YWJsZTxQYWdlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFBhZ2U+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQYWdlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBm
cmllbmQgY2xhc3MgU2V0dGluZ3NCYXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Tb2Nr
ZXRQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQ
cm92aWRlci5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29j
a2V0UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFNvY2tldFByb3Zp
ZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFNvY2tl
dFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92
aWRlciogcHJvdmlkZXIpCiB7Ci0gICAgcmV0dXJuIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNy
ZWF0ZSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCB7IH0pOwor
ICAgIHJldHVybiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUodXJsLCBjbGllbnQsIHNl
c3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgeyB9LCBwcm92aWRlcik7CiB9CiAgICAgCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCShyZXZpc2lvbiAyNDAxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNv
Y2tldFN0cmVhbUhhbmRsZTsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKQEAgLTM4
LDcgKzM5LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgU29ja2V0UHJvdmlkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29j
a2V0UHJvdmlkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNvY2tldFByb3ZpZGVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFByb3ZpZGVyKTsgfQotICAgIHZp
cnR1YWwgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNv
bnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOworICAgIHZpcnR1YWwgUmVmPFNvY2tldFN0
cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRp
YWxQYXJ0aXRpb24sIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2aXJ0dWFs
IH5Tb2NrZXRQcm92aWRlcigpIHsgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI0MDEw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRl
ci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCi1jbGFzcyBO
ZXR3b3JraW5nQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtpbmdDb250ZXh0PiB7
CitjbGFzcyBOZXR3b3JraW5nQ29udGV4dCA6IHB1YmxpYyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5OZXR3b3JraW5nQ29udGV4dCgpID0gZGVmYXVsdDsK
IApAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VB
cHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAK
LSAgICB2aXJ0dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25z
dCA9IDA7Ci0KICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCA9IDA7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yOSw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIK
KyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDkgKzc4LDggQEAgc3RhdGljIHNp
emVfdCByZW1vdmVUZXJtaW5hdGlvbkNoYXJhY3RlcgogICAgIHJldHVybiBkYXRhTGVuZ3RoIC0g
MjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxWZWN0b3I8dWludDhfdD4sIGJvb2w+
PiBjb29raWVEYXRhRm9ySGFuZHNoYWtlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5JiBoZWFkZXJGaWVsZFByb3h5KQorc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxWZWN0b3I8
dWludDhfdD4sIGJvb2w+PiBjb29raWVEYXRhRm9ySGFuZHNoYWtlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiogbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkKIHsKLSAgICBhdXRvIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oaGVhZGVy
RmllbGRQcm94eS5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIApAQCAtMTAzLDcgKzEwNCw3IEBAIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW4KICAgICBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwogCiAgICAgaWYgKGhlYWRlckZpZWxkUHJveHkpIHsKLSAg
ICAgICAgYXV0byBjb29raWVEYXRhRnJvbU5ldHdvcmtTZXNzaW9uID0gY29va2llRGF0YUZvckhh
bmRzaGFrZShoZWFkZXJGaWVsZFByb3h5LnZhbHVlKCkpOworICAgICAgICBhdXRvIGNvb2tpZURh
dGFGcm9tTmV0d29ya1Nlc3Npb24gPSBjb29raWVEYXRhRm9ySGFuZHNoYWtlKG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlciA/IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24o
KSA6IG51bGxwdHIsICpoZWFkZXJGaWVsZFByb3h5KTsKICAgICAgICAgaWYgKCFjb29raWVEYXRh
RnJvbU5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSwgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgUEFMIHsKK2Ns
YXNzIFNlc3Npb25JRDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb247CisKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4geworcHVibGljOgor
ICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgflN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIoKSB7IH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCShyZXZp
c2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTIgKzQxLDEzIEBAIHR5
cGVkZWYgc3RydWN0IF9fQ0ZIVFRQTWVzc2FnZSogQ0ZIVFRQTWUKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ3JlZGVudGlhbDsKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CiAK
IGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBT
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVk
ZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8
U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYm
IGF1ZGl0RGF0YSwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc2Vz
c2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSksIHByb3ZpZGVy
KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUltcGwoKTsKIApAQCAtNTgs
NyArNTksNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kSW50
ZXJuYWwoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJM
JiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYsIGNvbnN0IFN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2b2lkIGNyZWF0ZVN0cmVhbXMoKTsKICAgICB2
b2lkIHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJveHkoKTsKQEAgLTEwMyw2
ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAg
IFN0cmluZyBtX2NyZWRlbnRpYWxQYXJ0aXRpb247CiAgICAgU291cmNlQXBwbGljYXRpb25BdWRp
dFRva2VuIG1fYXVkaXREYXRhOworICAgIFJlZlB0cjxjb25zdCBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyPiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiAKICAgICBTdHJlYW1CdWZmZXI8dWludDhf
dCwgMTAyNCAqIDEwMjQ+IG1fYnVmZmVyOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhC
dWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsQ0ZOZXQuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC05NSw3ICs5Niw3IEBAIHN0YXRpYyBpbmxpbmUgYXV0byBj
YWxsYmFja3NSdW5Mb29wTW9kZSgKICNlbmRpZgogfQogCi1Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0
RGF0YSkKK1NvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNl
QXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhLCBjb25zdCBTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyKiBwcm92aWRlcikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkK
ICAgICAsIG1fY29ubmVjdGluZ1N1YnN0YXRlKE5ldykKICAgICAsIG1fY29ubmVjdGlvblR5cGUo
VW5rbm93bikKQEAgLTEwMyw2ICsxMDQsNyBAQCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2Nr
ZXRTdHJlYW1IYW5kCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2NyZWRl
bnRpYWxQYXJ0aXRpb24oY3JlZGVudGlhbFBhcnRpdGlvbikKICAgICAsIG1fYXVkaXREYXRhKFdU
Rk1vdmUoYXVkaXREYXRhKSkKKyAgICAsIG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlcihwcm92aWRl
cikKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50
ICVwIiwgdGhpcywgJm1fY2xpZW50KTsKIApAQCAtMzY3LDcgKzM2OSw3IEBAIGJvb2wgU29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6Z2V0U3RvcmVkQ08KIAogICAgIC8vIFRyeSBzeXN0ZW0gY3JlZGVu
dGlhbCBzdG9yYWdlIGZpcnN0LCBtYXRjaGluZyBIVFRQIGJlaGF2aW9yIChDRk5ldHdvcmsgb25s
eSBhc2tzIHRoZSBjbGllbnQgZm9yIHBhc3N3b3JkIGlmIGl0IGNvdWxkbid0IGZpbmQgaXQgaW4g
S2V5Y2hhaW4pLgogICAgIENyZWRlbnRpYWwgc3RvcmVkQ3JlZGVudGlhbDsKLSAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KG1fc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fc3RvcmFn
ZVNlc3Npb25Qcm92aWRlciA/IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Np
b24oKSA6IG51bGxwdHIpIHsKICAgICAgICAgc3RvcmVkQ3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNz
aW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShwcm90ZWN0
aW9uU3BhY2UpOwogICAgICAgICBpZiAoc3RvcmVkQ3JlZGVudGlhbC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBzdG9yZWRDcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9y
YWdlKCkuZ2V0KG1fY3JlZGVudGlhbFBhcnRpdGlvbiwgcHJvdGVjdGlvblNwYWNlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXI7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFt
SGFuZGxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+
IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQs
IFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9r
ZW4mJikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVybCwg
Y2xpZW50KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwg
Y29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgcHJvdmlkZXIpKTsgfQog
CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCkBAIC01Niw3ICs1Nyw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5h
bDsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
KGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50JiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogCiAgICAgc2l6ZV90IGJ1
ZmZlcmVkQW1vdW50KCkgZmluYWw7CiAgICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJ
bnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKQEAgLTY5LDYgKzcwLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtXcml0ZUJ1ZmZlclNpemUgPSA0ICogMTAyNDsK
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtSZWFkQnVmZmVyU2l6ZSA9IDQgKiAxMDI0OwogCisg
ICAgUmVmUHRyPGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Npb25Q
cm92aWRlcjsKICAgICBSZWZQdHI8VGhyZWFkPiBtX3dvcmtlclRocmVhZDsKICAgICBzdGQ6OmF0
b21pYzxib29sPiBtX3J1bm5pbmcgeyB0cnVlIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiB1
cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50KQorU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50JiBjbGllbnQsIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqIHByb3ZpZGVyKQog
ICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQorICAgICwgbV9zdG9yYWdlU2Vz
c2lvblByb3ZpZGVyKHByb3ZpZGVyKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFt
SGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCAmbV9jbGllbnQpOwogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHJldmlzaW9u
IDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC01MSw3ICs1Miw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKIAogY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5k
bGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gY3Jl
YXRlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CisgICAgc3Rh
dGljIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBjcmVhdGUoY29uc3QgVVJMJiwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKik7
CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCiAgICAgY29uc3QgVVJM
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwbGF0Zm9ybVNlbmRIYW5kc2hha2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+
JiwgRnVuY3Rpb248dm9pZChib29sLCBib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBwbGF0Zm9y
bUNsb3NlKCkgZmluYWw7CiBwcml2YXRlOgotICAgIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29u
c3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CisgICAgU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBjb25zdCBTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKik7CiAKICAgICBzaXplX3QgYnVmZmVyZWRBbW91bnQoKSBmaW5h
bDsKICAgICBPcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOwpAQCAtNzgsNiArNzksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmFp
bChTb2NrZXRTdHJlYW1FcnJvciYmKTsKICAgICB2b2lkIHdyaXRlUmVhZHkoKTsKIAorICAgIFJl
ZlB0cjxjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXI7CisgICAgCiAgICAgR1JlZlB0cjxHSU9TdHJlYW0+IG1fc3RyZWFtOwogICAgIEdSZWZQdHI8
R0lucHV0U3RyZWFtPiBtX2lucHV0U3RyZWFtOwogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0
U3RyZWFtPiBtX291dHB1dFN0cmVhbTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxTb3VwLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzIEx0ZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KQEAgLTQxLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1
ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJVUkxTb3VwLmgiCiAjaW5j
bHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTgxLDEyICs4MywxMiBAQCBz
dGF0aWMgdm9pZCBzb2NrZXRDbGllbnRFdmVudENhbGxiYWNrKEdTCiB9CiAjZW5kaWYKIAotUmVm
PFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZShj
b25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRv
a2VuJiYpCitSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmIGNsaWVu
dCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYsIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRU
b2tlbiYmLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKiBzdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyKQogewotICAgIFJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBzb2NrZXQgPSBhZG9wdFJl
ZigqbmV3IFNvY2tldFN0cmVhbUhhbmRsZUltcGwodXJsLCBjbGllbnQpKTsKKyAgICBSZWY8U29j
a2V0U3RyZWFtSGFuZGxlSW1wbD4gc29ja2V0ID0gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsKHVybCwgY2xpZW50LCBzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKSk7CiAKICNpZiBT
T1VQX0NIRUNLX1ZFUlNJT04oMiwgNjEsIDkwKQotICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKTsK
KyAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvblByb3ZpZGVy
ID8gc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSA6IG51bGxwdHI7CiAg
ICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBzb2NrZXQ7CiAK
QEAgLTk2LDcgKzk4LDYgQEAgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IFNvY2tldFN0cmVh
bQogICAgICAgICB1cmwucHJvdG9jb2xJcygid3NzIikgPyByZWludGVycHJldF9jYXN0PFNvdXBT
ZXNzaW9uQ29ubmVjdFByb2dyZXNzQ2FsbGJhY2s+KGNvbm5lY3RQcm9ncmVzc0NhbGxiYWNrKSA6
IG51bGxwdHIsCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4o
Y29ubmVjdGVkQ2FsbGJhY2spLCAmcHJvdGVjdGVkU29ja2V0U3RyZWFtSGFuZGxlLmxlYWtSZWYo
KSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShzZXNzaW9uSUQpOwogICAgIHVuc2lnbmVkIHBv
cnQgPSB1cmwucG9ydCgpID8gdXJsLnBvcnQoKS52YWx1ZSgpIDogKHVybC5wcm90b2NvbElzKCJ3
c3MiKSA/IDQ0MyA6IDgwKTsKICAgICBHUmVmUHRyPEdTb2NrZXRDbGllbnQ+IHNvY2tldENsaWVu
dCA9IGFkb3B0R1JlZihnX3NvY2tldF9jbGllbnRfbmV3KCkpOwogICAgIGlmICh1cmwucHJvdG9j
b2xJcygid3NzIikpIHsKQEAgLTExMSw4ICsxMTIsOSBAQCBSZWY8U29ja2V0U3RyZWFtSGFuZGxl
SW1wbD4gU29ja2V0U3RyZWFtCiAgICAgcmV0dXJuIHNvY2tldDsKIH0KIAotU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQpCitTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQmIGNsaWVudCwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpCiAgICAg
OiBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpCisgICAgLCBtX3N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIocHJvdmlkZXIpCiAgICAgLCBtX2NhbmNlbGxhYmxlKGFkb3B0R1JlZihnX2NhbmNl
bGxhYmxlX25ldygpKSkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAl
cCBuZXcgY2xpZW50ICVwIiwgdGhpcywgJm1fY2xpZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI2IEBACisyMDE5LTAxLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y3JlYXRlU29ja2V0U3RyZWFtKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJl
YW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0U3RyZWFtOjpOZXR3b3JrU29ja2V0U3RyZWFt
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRk
ZWQuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZUphcjo6V2ViQ29va2llSmFyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmg6CisKIDIwMTktMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBTUEkgZm9yIGNvbnRyb2xsaW5nIGdldFVzZXJN
ZWRpYQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI0MDEwNCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHRv
a2VuID0geyBtX25ldHdvcmtQcm9jZXNzLT5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIH07
CiAjZW5kaWYKLSAgICBtX25ldHdvcmtTb2NrZXRTdHJlYW1zLnNldChpZGVudGlmaWVyLCBOZXR3
b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUoV1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQsIGNhY2hlUGFy
dGl0aW9uLCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24sIFdURk1vdmUodG9rZW4pKSk7CisgICAg
bV9uZXR3b3JrU29ja2V0U3RyZWFtcy5zZXQoaWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVh
bTo6Y3JlYXRlKG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCksIFdURk1vdmUodXJsKSwgc2Vzc2lvbklE
LCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLCBXVEZNb3ZlKHRva2Vu
KSkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZXN0cm95U29j
a2V0U3RyZWFtKHVpbnQ2NF90IGlkZW50aWZpZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5jcHAJKHJldmlzaW9uIDI0
MDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVh
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
U29ja2V0U3RyZWFtLmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
TmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRTdHJl
YW1NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvY2tldFN0cmVhbUVycm9yLmg+CkBAIC0zNCwx
NSArMzUsMTUgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLVJlZjxOZXR3b3JrU29ja2V0U3RyZWFtPiBOZXR3b3JrU29ja2V0U3RyZWFtOjpjcmVhdGUo
VVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVu
dGlhbFBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpCitSZWY8TmV0
d29ya1NvY2tldFN0cmVhbT4gTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgVVJMJiYgdXJsLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgdWludDY0X3QgaWRlbnRpZmllciwg
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4m
JiBhdWRpdERhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya1NvY2tldFN0
cmVhbShXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgaWRlbnRp
ZmllciwgY29ubmVjdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmV0d29ya1NvY2tldFN0cmVhbShuZXR3b3JrUHJvY2VzcywgV1RGTW92ZSh1cmwp
LCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGlkZW50aWZpZXIsIGNvbm5lY3Rpb24s
IFdURk1vdmUoYXVkaXREYXRhKSkpOwogfQogCi1OZXR3b3JrU29ja2V0U3RyZWFtOjpOZXR3b3Jr
U29ja2V0U3RyZWFtKFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXRE
YXRhKQorTmV0d29ya1NvY2tldFN0cmVhbTo6TmV0d29ya1NvY2tldFN0cmVhbShOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIs
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2Vu
JiYgYXVkaXREYXRhKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2Nv
bm5lY3Rpb24oY29ubmVjdGlvbikKLSAgICAsIG1faW1wbChTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpjcmVhdGUodXJsLCAqdGhpcywgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZN
b3ZlKGF1ZGl0RGF0YSkpKQorICAgICwgbV9pbXBsKFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNy
ZWF0ZSh1cmwsICp0aGlzLCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFdURk1vdmUo
YXVkaXREYXRhKSwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXI6OmNyZWF0ZShuZXR3b3Jr
UHJvY2Vzcywgc2Vzc2lvbklEKS5wdHIoKSkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldFN0cmVhbS5oCShyZXZpc2lvbiAy
NDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJl
YW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksMTEgQEAgY2xhc3MgRGF0YVJlZmVyZW5j
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworCiBjbGFz
cyBOZXR3b3JrU29ja2V0U3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1NvY2tldFN0
cmVhbT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciwgcHVibGljIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrU29ja2V0U3RyZWFtPiBjcmVhdGUoVVJMJiYsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90LCBJ
UEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7
CisgICAgc3RhdGljIFJlZjxOZXR3b3JrU29ja2V0U3RyZWFtPiBjcmVhdGUoTmV0d29ya1Byb2Nl
c3MmLCBVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRp
dGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxpY2F0
aW9uQXVkaXRUb2tlbiYmKTsKICAgICB+TmV0d29ya1NvY2tldFN0cmVhbSgpOwogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAg
LTYyLDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBmaW5hbDsKIAotICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0oVVJMJiYsIFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90LCBJUEM6
OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7Cisg
ICAgTmV0d29ya1NvY2tldFN0cmVhbShOZXR3b3JrUHJvY2VzcyYsIFVSTCYmLCBQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpD
b25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwogCiAg
ICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIElQQzo6Q29ubmVjdGlvbiYgbV9jb25uZWN0
aW9uOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVNlc3Npb25Qcm92
aWRlci5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlcj4g
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgUEFMOjpTZXNzaW9u
SUQmIHNlc3Npb25JRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrU3RvcmFnZVNlc3Np
b25Qcm92aWRlcihuZXR3b3JrUHJvY2Vzcywgc2Vzc2lvbklEKSk7IH0KKyAgICAKK3ByaXZhdGU6
CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQorICAgICAgICA6IG1f
bmV0d29ya1Byb2Nlc3MobWFrZVdlYWtQdHIobmV0d29ya1Byb2Nlc3MpKQorICAgICAgICAsIG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkgeyB9CisKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIGlmICht
X25ldHdvcmtQcm9jZXNzKQorICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBXZWFrUHRyPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQ
cm9jZXNzOworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworfTsKKworfQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQ1LDYgKzM0NDUsNyBAQAogCQk1QzhERDM4MTFG
RTQ1NUNBMDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UXVpcmsuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUF1dG9wbGF5UXVpcmsuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUM5RTU2ODAxREY3RjA1NTAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGlj
aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLV2Vic2l0ZVBv
bGljaWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5RTU2ODExREY3RjA1
NTAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDOUVGMkU3MjFGMDU4RjkwMDNCREM1NiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92
aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0EyNkQ3RjIx
N0FCQkI2MDBGOTdBMzUgLyogV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0EyNkQ4MDIxN0FCQkI2MDBGOTdBMzUgLyogV0tT
YWZlQnJvd3NpbmdXYXJuaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
U2FmZUJyb3dzaW5nV2FybmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0E5
ODU0OTIxMEJFQjVBMDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nV2FybmluZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTYWZlQnJvd3NpbmdXYXJuaW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NDM5LDYgKzY0NDAsNyBAQAogCQkJCTVDMEIxNzdEMUU3Qzg4
NjcwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtLmNwcCAqLywKIAkJCQk1QzBCMTc3RTFF
N0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5oICovLAogCQkJCTVDMEIxNzdG
MUU3Qzg4NjcwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtLm1lc3NhZ2VzLmluICovLAor
CQkJCTVDOUVGMkU3MjFGMDU4RjkwMDNCREM1NiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92
aWRlci5oICovLAogCQkJCTQ2MjEwN0Q3MUYzOERCRDMwMERENzgxMCAvKiBQaW5nTG9hZC5jcHAg
Ki8sCiAJCQkJNUNFODVCMUYxQzg4RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2FkLmggKi8sCiAJCQkJ
ODNBMEVEMzMxRjc0N0NDNzAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmNwcCAqLywKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQ
cm92aWRlci5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyAr
MzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
UmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gV2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0ZVNvY2tldFN0
cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGll
bnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFy
dGl0aW9uKQorUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gV2ViU29ja2V0UHJvdmlkZXI6OmNyZWF0
ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVk
ZW50aWFsUGFydGl0aW9uLCBjb25zdCBTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKikKIHsKICAgICBy
ZXR1cm4gV2ViU29ja2V0U3RyZWFtOjpjcmVhdGUodXJsLCBjbGllbnQsIHNlc3Npb25JRCwgY3Jl
ZGVudGlhbFBhcnRpdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgJKHJldmlzaW9uIDI0MDEwNCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJTb2NrZXRQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRQcm92aWRlciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJTb2NrZXRQcm92aWRlcj4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb2NrZXRQcm92aWRlcik7IH0KLSAgICBSZWY8V2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJM
JiwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikgZmluYWw7CisgICAgUmVmPFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYs
IFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGNvbnN0IFdlYkNvcmU6OlN0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIqKSBmaW5hbDsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRQcm92aWRlcigpIHsg
fQogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2ll
SmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb29raWVKYXIuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICsz
NCwxOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorY2xhc3MgV2ViU3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1YmxpYyBXZWJDb3Jl
OjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKKyAgICAvLyBOZXR3b3JrU3RvcmFnZVNlc3Npb25z
IGFyZSBhY2Nlc3NlZCBvbmx5IGluIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKyAgICBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbnVsbHB0cjsgfQorfTsKKworV2ViQ29va2llSmFyOjpXZWJDb29raWVKYXIoKQorICAgIDog
V2ViQ29yZTo6Q29va2llSmFyKGFkb3B0UmVmKCpuZXcgV2ViU3RvcmFnZVNlc3Npb25Qcm92aWRl
cikpIHsgfQorCiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b29raWVKYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJDb29raWVKYXIuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDggQEAgcHVibGljOgogICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNz
aW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3Qg
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSkgZmluYWw7Citwcml2YXRlOgorICAgIFdlYkNvb2tpZUphcigpOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkocmV2
aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wMS0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYktpdExlZ2FjeS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTAxLTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBDU1AgdmlvbGF0aW9uIHJlcG9ydHMgc2hvdWxkIGJ5cGFz
cyBDU1AgY2hlY2tzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1Bh
Z2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGFnZVN0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK2NsYXNzIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8UGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpOyB9CisK
KyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIChtX3BhZ2UpCisgICAgICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihtX3BhZ2UtPnNlc3Npb25J
RCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgdm9pZCBzZXRQYWdl
KFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCisgICAgeworICAgICAgICBtX3BhZ2UgPSBtYWtlV2Vha1B0
cihwYWdlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2Vha1B0cjxXZWJDb3JlOjpQYWdlPiBt
X3BhZ2U7Cit9OwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDAxMDQpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L1dlYktpdExlZ2FjeS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDcgQEAKIAkJNTk4QUQ5MjgxMjAxQ0Yz
MjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4QUQ5MjcxMjAxQ0YzMjAw
QUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tICovOyB9OwogCQk1
OThBRDkyQTEyMDFDRjNCMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2tJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTk4QUQ5MjkxMjAxQ0YzQjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJNb2NrSW50ZXJuYWwuaCAqLzsgfTsKIAkJNTk4QURBNDYxMjAyMjc1MDAwQUJBRTRFIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEQTQ1MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNUM5RUYyRjUyMUYwNjFCRTAwM0JEQzU2IC8qIFBhZ2VTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzlFRjJGNDIxRjA2MUJFMDAzQkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIuaCAqLzsgfTsKIAkJNUNFNDRGNEEyMDZENzBFQTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTQ0RjQ5MjA2
RDcwRTkwMDNFRkQwMSAvKiBQaW5nSGFuZGxlLmggKi87IH07CiAJCTVEN0JGODE0MEMyQTFEOTAw
MDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVEN0JGODEyMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1RDdC
RjgxNTBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ3QkY4MTMwQzJBMUQ5MDAwOENFMDZEIC8q
IFdlYkluc3BlY3Rvci5tbSAqLzsgfTsKQEAgLTk4Niw2ICs5ODcsNyBAQAogCQk1OThBRDkyNzEy
MDFDRjMyMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlv
blByb3ZpZGVyTW9jay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk4QUQ5Mjkx
MjAxQ0YzQjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlck1vY2tJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
OThBREE0NTEyMDIyNzUwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDOUVGMkY0MjFGMDYxQkUw
MDNCREM1NiAvKiBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oOyBwYXRoID0gV2Vi
Q29yZVN1cHBvcnQvUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OwogCQk1Q0U0NEY0OTIwNkQ3MEU5MDAzRUZEMDEgLyogUGluZ0hhbmRsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQaW5nSGFuZGxlLmg7IHBhdGggPSBX
ZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU1NCw2ICsyNTU2LDcgQEAKIAkJCQlB
MTBDMUQ0NDE4MjAyRkZCMDAzNjg4M0EgLyogaW9zICovLAogCQkJCUI4Mjk1OEQxMTMyNzA3RDAw
MDBEMEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLywKIAkJCQlCODI5NThEMjEzMjcwN0QwMDAw
RDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovLAorCQkJCTVDOUVGMkY0MjFGMDYxQkUwMDNC
REM1NiAvKiBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovLAogCQkJCTVDRTQ0RjQ5MjA2
RDcwRTkwMDNFRkQwMSAvKiBQaW5nSGFuZGxlLmggKi8sCiAJCQkJN0MwMUNCODExNzM0MzVDOTAw
QzVEODA3IC8qIFBvcHVwTWVudU1hYy5oICovLAogCQkJCTdDMDFDQjgyMTczNDM1QzkwMEM1RDgw
NyAvKiBQb3B1cE1lbnVNYWMubW0gKi8sCkBAIC0yOTM0LDYgKzI5MzcsNyBAQAogCQkJCUUxNTMx
QkQ4MjE4N0I5NTQwMDJFM0Y4MSAvKiBOU1VSTERvd25sb2FkU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5M0Q0Mzc5QjFENTdBQkVGMDBBQjg1RUEgLyogT2JqQ0V2ZW50TGlzdGVuZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzRDQzNzlEMUQ1N0FCRUYwMEFCODVFQSAvKiBPYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUM5RUYyRjUyMUYwNjFCRTAwM0JEQzU2
IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0U0
NEY0QTIwNkQ3MEVBMDAzRUZEMDEgLyogUGluZ0hhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTEwQzFENUYxODIwMzAwRTAwMzY4ODNBIC8qIFBvcHVwTWVudUlPUy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0MwMUNCODUxNzM0MzVDOTAwQzVEODA3IC8qIFBvcHVwTWVudU1hYy5oIGluIEhlYWRl
cnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDAxMDQp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxOS0wMS0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNh
Y2hlIGFkZEltYWdlVG9DYWNoZTpmb3JVUkw6Zm9yRnJhbWU6XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVI
VE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorCiAy
MDE5LTAxLTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVkdWNlIHVzZSBvZiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbiBpbiBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNj
L1dlYkNhY2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViQ2FjaGUubW0JKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViQ2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5Q2FjaGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCkBAIC01MCw2ICs1MSwxMyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlVGhyZWFkUnVuLmg+CiAjZW5kaWYKIAorY2xhc3MgRGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRl
ciB7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICByZXR1cm4gJldlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgfQorfTsKKwogQGltcGxl
bWVudGF0aW9uIFdlYkNhY2hlCiAKICsgKHZvaWQpaW5pdGlhbGl6ZQpAQCAtMTY1LDcgKzE3Myw4
IEBAICsgKGJvb2wpYWRkSW1hZ2VUb0NhY2hlOihDR0ltYWdlUmVmKWltYWcKICAgICBpZiAoIWlt
YWdlIHx8ICF1cmwgfHwgIVtbdXJsIGFic29sdXRlU3RyaW5nXSBsZW5ndGhdKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRv
bigpLmFkZEltYWdlVG9DYWNoZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4oaW1hZ2UpLCB1cmwsIGZy
YW1lID8gY29yZShmcmFtZSktPmRvY3VtZW50KCktPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkg
OiBlbXB0eVN0cmluZygpLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXZWJD
b3JlOjpDb29raWVKYXI6OmNyZWF0ZSgpLnB0cigpKTsKKyAgICBhdXRvIHByb3ZpZGVyID0gYWRv
cHRSZWYoKm5ldyBEZWZhdWx0U3RvcmFnZVNlc3Npb25Qcm92aWRlcik7CisgICAgcmV0dXJuIFdl
YkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5hZGRJbWFnZVRvQ2FjaGUoUmV0YWluUHRy
PENHSW1hZ2VSZWY+KGltYWdlKSwgdXJsLCBmcmFtZSA/IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgp
LT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIDogZW1wdHlTdHJpbmcoKSwgUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV2ViQ29yZTo6Q29va2llSmFyOjpjcmVhdGUoV1RGTW92
ZShwcm92aWRlcikpLnB0cigpKTsKIH0KIAogKyAodm9pZClyZW1vdmVJbWFnZUZyb21DYWNoZUZv
clVSTDooTlNVUkwgKil1cmwKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2lt
cG9ydCAiRE9NSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgogI2ltcG9y
dCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIuaCIKICNpbXBvcnQgIlN0b3JhZ2VUaHJlYWQuaCIKICNpbXBvcnQgIldlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oIgogI2ltcG9ydCAiV2ViQXBwbGljYXRpb25DYWNoZUludGVybmFsLmgiCkBA
IC0xNDQwLDEzICsxNDQxLDE0IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmEKICAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdy
b3VwTmFtZSwgX3ByaXZhdGUtPnByZWZlcmVuY2VzLl9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgp
OwogICAgIF9wcml2YXRlLT5ncm91cC0+YWRkV2ViVmlldyhzZWxmKTsKIAorICAgIGF1dG8gc3Rv
cmFnZVByb3ZpZGVyID0gUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI6OmNyZWF0ZSgpOwogICAg
IFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKAogICAgICAgICBtYWtlVW5pcXVl
UmVmPFdlYkVkaXRvckNsaWVudD4oc2VsZiksCiAgICAgICAgIFNvY2tldFByb3ZpZGVyOjpjcmVh
dGUoKSwKICAgICAgICAgTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBXZWJD
b3JlOjpDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIEJhY2tGb3J3YXJk
TGlzdDo6Y3JlYXRlKHNlbGYpLAotICAgICAgICBDb29raWVKYXI6OmNyZWF0ZSgpCisgICAgICAg
IENvb2tpZUphcjo6Y3JlYXRlKHN0b3JhZ2VQcm92aWRlci5jb3B5UmVmKCkpCiAgICAgKTsKICNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGll
bnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYpOwpAQCAtMTQ3Nyw2ICsxNDc5LDcgQEAgLSAo
dm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSAmX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3JlID0gJl9w
cml2YXRlLT5ncm91cC0+dmlzaXRlZExpbmtTdG9yZSgpOwogICAgIF9wcml2YXRlLT5wYWdlID0g
bmV3IFBhZ2UoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIHN0b3JhZ2VQcm92aWRl
ci0+c2V0UGFnZSgqX3ByaXZhdGUtPnBhZ2UpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldEdy
b3VwTmFtZShncm91cE5hbWUpOwogCkBAIC0xNzA2LDEzICsxNzA5LDE0IEBAIC0gKGlkKWluaXRT
aW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE4KICAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJW
aWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgX3ByaXZhdGUtPnByZWZlcmVuY2VzLl9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIF9wcml2YXRlLT5ncm91cC0+YWRkV2ViVmll
dyhzZWxmKTsKIAorICAgIGF1dG8gc3RvcmFnZVByb3ZpZGVyID0gUGFnZVN0b3JhZ2VTZXNzaW9u
UHJvdmlkZXI6OmNyZWF0ZSgpOwogICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0
aW9uKAogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkVkaXRvckNsaWVudD4oc2VsZiksCiAgICAg
ICAgIFNvY2tldFByb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgTGliV2ViUlRDUHJvdmlkZXI6
OmNyZWF0ZSgpLAogICAgICAgICBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRl
KCksCiAgICAgICAgIEJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKHNlbGYpLAotICAgICAgICBDb29r
aWVKYXI6OmNyZWF0ZSgpCisgICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKHN0b3JhZ2VQcm92aWRl
ci5jb3B5UmVmKCkpCiAgICAgKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQg
PSBuZXcgV2ViQ2hyb21lQ2xpZW50SU9TKHNlbGYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CkBAIC0xNzM0LDYgKzE3MzgsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0
eWxlOihOCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGx1Z2luSW5mb1Byb3ZpZGVyID0gJldlYlBs
dWdpbkluZm9Qcm92aWRlcjo6c2luZ2xldG9uKCk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZSA9IG5l
dyBQYWdlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBzdG9yYWdlUHJvdmlkZXIt
PnNldFBhZ2UoKl9wcml2YXRlLT5wYWdlKTsKICAgICAKICAgICBbc2VsZiBzZXRTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQ6WUVTXTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6Cisg
ICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKwogMjAxOS0wMS0xNSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZHVjZSB1c2Ug
b2YgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24gaW4gV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDI0MDEwNCkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTWFyc2hhbGxpbmdIZWxwZXJz
LmgiCisjaW5jbHVkZSAiUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJQ
bHVnaW5EYXRhYmFzZS5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJXZWJB
cHBsaWNhdGlvbkNhY2hlLmgiCkBAIC0zMTA2LDEzICszMTA3LDE0IEBAIEhSRVNVTFQgV2ViVmll
dzo6aW5pdFdpdGhGcmFtZShSRUNUIGZyYW0KIAogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbmV3
IFdlYkluc3BlY3RvckNsaWVudCh0aGlzKTsKIAorICAgIGF1dG8gc3RvcmFnZVByb3ZpZGVyID0g
UGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI6OmNyZWF0ZSgpOwogICAgIFBhZ2VDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24oCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50
Pih0aGlzKSwKICAgICAgICAgU29ja2V0UHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBtYWtl
VW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPigpLAogICAgICAgICBXZWJDb3JlOjpDYWNoZVN0
b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIEJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRl
KCksCi0gICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKCkKKyAgICAgICAgQ29va2llSmFyOjpjcmVh
dGUoc3RvcmFnZVByb3ZpZGVyLmNvcHlSZWYoKSkKICAgICApOwogICAgIGNvbmZpZ3VyYXRpb24u
Y2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKTsKICAgICBjb25maWd1cmF0
aW9uLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHRoaXMpOwpA
QCAtMzEyOCw2ICszMTMwLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1Qg
ZnJhbQogICAgIGNvbmZpZ3VyYXRpb24ucGx1Z2luSW5mb1Byb3ZpZGVyID0gJldlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6c2luZ2xldG9uKCk7CiAKICAgICBtX3BhZ2UgPSBuZXcgUGFnZShXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKTsKKyAgICBzdG9yYWdlUHJvdmlkZXItPnNldFBhZ2UoKnBhZ2UpOwog
ICAgIHByb3ZpZGVHZW9sb2NhdGlvblRvKG1fcGFnZSwgKm5ldyBXZWJHZW9sb2NhdGlvbkNsaWVu
dCh0aGlzKSk7CiAKICAgICBtX3BhZ2UtPmFkZExheW91dE1pbGVzdG9uZXMoeyBEaWRGaXJzdExh
eW91dCwgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359361</attachid>
            <date>2019-01-17 00:28:50 -0800</date>
            <delta_ts>2019-01-17 09:01:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193529-20190117002849.patch</filename>
            <type>text/plain</type>
            <size>61626</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE93bmVyc2hpcCBvZiB0
aGUgbWFwIHRoYXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBzZWFyY2hl
cyBuZWVkcyB0byBtb3ZlIHRvIHRoZSBXZWJLaXQvV2ViS2l0TGVnYWN5IGxheWVyLAorICAgICAg
ICBzbyB3aGVuIFdlYkNvcmUgdXNlZCB0byBsb29rIGluIHRoaXMgbWFwIGl0IG5lZWRzIHRvIGNh
bGwgYSBjbGllbnQgZnVuY3Rpb24gdG8gYXNrIHRoZSBsYXllciBhYm92ZSBpdCBmb3IgdGhlIHN0
b3JhZ2Ugb2JqZWN0LgorICAgICAgICBJJ3ZlIGNhbGxlZCB0aGlzIGNsaWVudCBTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyOjpzdG9yYWdlU2Vzc2lvbi4gIFJpZ2h0IG5vdyBpdCBqdXN0IGxvb2tzIGlu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24sCisgICAgICAgIGJ1dCB0aGlz
IGFkZGVkIGFic3RyYWN0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1vdmUgdGhlIGN1cnJlbnRs
eSBwcm9jZXNzLWdsb2JhbCBtYXAgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIE5ldHdvcmtQcm9jZXNz
IG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Q29va2llSmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzRW5h
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Nv
Y2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFByb3ZpZGVyOjpjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZURhdGFGb3JIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjp+U3RvcmFnZVNlc3Npb25Qcm92aWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0
cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Z2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSk6CisKIDIwMTktMDEtMTYgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVcGRh
dGUgdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIHRvIGFjdHVhbGx5IHVzZSB2ZXJ0
ZXggYnVmZmVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEyMyw3ICsx
MjQsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMCiAgICAgICAg
IFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQgPSBwYWdlID8gcGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwogICAgICAgICBTdHJpbmcgcGFydGl0aW9uID0gbV9kb2N1bWVudC0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKLSAgICAgICAgbV9oYW5kbGUgPSBtX3NvY2tldFByb3Zp
ZGVyLT5jcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUobV9oYW5kc2hha2UtPnVybCgpLCAqdGhpcywg
c2Vzc2lvbklELCBwYXJ0aXRpb24pOworICAgICAgICBtX2hhbmRsZSA9IG1fc29ja2V0UHJvdmlk
ZXItPmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShtX2hhbmRzaGFrZS0+dXJsKCksICp0aGlzLCBz
ZXNzaW9uSUQsIHBhcnRpdGlvbiwgZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAy
LDYgKzE5MDIsNyBAQAogCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4
dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsgfTsK
IAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QjQxOTFB
RUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzdDODhE
ODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBT
b2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTVDOUVGMkYzMjFGMDYxOTAwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlF
RjJGMjIxRjA2MTcxMDAzQkRDNTYgLyogU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQTFERUM2MUY3MUYx
QzcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTFERUM0MUY3MUU2ODcwMEU3MUJEMyAvKiBIVFRQSGVh
ZGVyRmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1Q0IzN0ZGRjFDNjJEMkExMDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzN0ZGRDFDNjJE
Mjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggKi87IH07CiAJCTVDQkM4REFEMUFB
QTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzhEQUIxQUFBMzAyMjAwRTFD
ODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmggKi87IH07CkBAIC04OTA4LDYgKzg5
MDksNyBAQAogCQk1QzlCODYwQjFDMjFFM0M2MDAxMTBGMzYgLyogTmV0d29ya0xvYWRNZXRyaWNz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0xvYWRN
ZXRyaWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFRjE2RjFERkY3MTk5
MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFhQYXRoR3JhbW1hci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDOUVGMTcwMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWFBhdGhHcmFtbWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDOUVGMkYyMjFGMDYxNzEwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMURFQzIxRjcxRTY4NjAw
RTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIVFRQSGVhZGVyRmllbGQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUVFBIZWFkZXJGaWVsZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Q0IzN0ZGQzFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5p
bWF0b3JNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9s
bEFuaW1hdG9yTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTkzNSw2
ICsxOTkzNyw3IEBACiAJCQkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZS5oICovLAogCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCAqLywKIAkJCQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi8sCisJCQkJNUM5RUYyRjIyMUYwNjE3MTAwM0JEQzU2
IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk0NjgyRDFGRjFGNzk3ODIzMDBD
ODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLywKIAkJCQlFMTgwODExMDE2RkNG
NDJFMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUUxODA4
MTE1MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oICovLApAQCAt
MzE1NDAsNiArMzE1NDMsNyBAQAogCQkJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9y
YWdlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTBEMEU4MzBGRjQyNzI5MDBBQzI2NDQgLyog
U3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzNzYzNkMxQTJFNjhCQjAw
OUE3RUUyIC8qIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NUM5RUYyRjMyMUYwNjE5MDAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNjZEM0NEMUU4RUQ0OEYwMEFENjJFMyAvKiBTdG9yYWdlVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAw
QTYwMzMgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCAr
MzYsMTYgQEAKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgorI2luY2x1ZGUgIlN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1JlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRl
KFJlZjxTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKFdURk1vdmUoc3RvcmFnZVNlc3Np
b25Qcm92aWRlcikpKTsKK30KKwogSW5jbHVkZVNlY3VyZUNvb2tpZXMgQ29va2llSmFyOjpzaG91
bGRJbmNsdWRlU2VjdXJlQ29va2llcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIHJldHVybiAodXJsLnByb3RvY29sSXMoImh0dHBzIikgJiYgIWRvY3Vt
ZW50LmZvdW5kTWl4ZWRDb250ZW50KCkuY29udGFpbnMoU2VjdXJpdHlDb250ZXh0OjpNaXhlZENv
bnRlbnRUeXBlOjpBY3RpdmUpKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRl
U2VjdXJlQ29va2llczo6Tm87CkBAIC01Miw5ICs1OCw5IEBAIFNhbWVTaXRlSW5mbyBDb29raWVK
YXI6OnNhbWVTaXRlSW5mbyhjb24KICAgICByZXR1cm4geyB9OwogfQogCi1SZWY8Q29va2llSmFy
PiBDb29raWVKYXI6OmNyZWF0ZSgpCitDb29raWVKYXI6OkNvb2tpZUphcihSZWY8U3RvcmFnZVNl
c3Npb25Qcm92aWRlcj4mJiBzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKQorICAgIDogbV9zdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKFdURk1vdmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKTsKIH0KIAogQ29va2llSmFyOjp+Q29va2ll
SmFyKCkgPSBkZWZhdWx0OwpAQCAtNzMsNyArNzksNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29r
aWVzKERvY3VtZW50JiBkb2N1CiAgICAgfQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
cmVzdWx0OwotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAg
IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTEwLDI0ICsxMTYsMjQgQEAgdm9pZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9j
dW1lbnQmIGRvYwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFn
ZUlEKCk7CiAgICAgfQogCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkK
ICAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGNvb2tpZVN0cmluZyk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotYm9vbCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkgY29uc3QKK2Jvb2wgQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVu
dCYpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuIHNlc3Npb24tPmNvb2tpZXNFbmFibGVkKCk7CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0
cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKLSAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJl
c3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVz
KTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmZpcnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJl
Q29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAg
fQpAQCAtMTYwLDE2ICsxNjYsMTYgQEAgYm9vbCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29u
c3QgRG9jdQogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlE
KCk7CiAgICAgfQogCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuIHNlc3Npb24tPmdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGNvb2tpZXMpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIENvb2tpZUphcjo6ZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgQ29v
a2llSmFyOjpkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VT
ZXNzaW9uKCkpCiAgICAgICAgIHNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUp
OwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBQQUwg
ewpAQCAtNDAsMTEgKzQxLDEzIEBAIGVudW0gY2xhc3MgU2VjdXJlQ29va2llc0FjY2Vzc2VkIDog
Ym9vbCAKIGNsYXNzIERvY3VtZW50Owogc3RydWN0IENvb2tpZTsKIHN0cnVjdCBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eTsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2NsYXNz
IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBDb29raWVKYXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDb29raWVKYXI+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvb2tpZUphcj4gY3JlYXRlKCk7CisgICAgc3RhdGlj
IFJlZjxDb29raWVKYXI+IGNyZWF0ZShSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJik7CiAg
ICAgCiAgICAgc3RhdGljIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5IGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJik7CiAKQEAgLTYz
LDYgKzY2LDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgU2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbyhjb25zdCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyBJbmNsdWRlU2VjdXJl
Q29va2llcyBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFVSTCYpOworICAgIENvb2tpZUphcihSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJik7CisK
K3ByaXZhdGU6CisgICAgUmVmPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Np
b25Qcm92aWRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDYg
KzUzNSwxMCBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAorY2xhc3Mg
RW1wdHlTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgeworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9Cit9OworCiBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29u
ZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKQogewogICAgIFBhZ2VDb25maWd1cmF0aW9uIHBh
Z2VDb25maWd1cmF0aW9uIHsKQEAgLTU0Myw3ICs1NDcsNyBAQCBQYWdlQ29uZmlndXJhdGlvbiBw
YWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGUo
KSwKICAgICAgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBhZG9w
dFJlZigqbmV3IEVtcHR5QmFja0ZvcndhcmRDbGllbnQpLAotICAgICAgICBDb29raWVKYXI6OmNy
ZWF0ZSgpCisgICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKSkKICAgICB9OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEVtcHR5Q2hyb21lQ2xpZW50PiBkdW1teUNocm9tZUNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtMTY2LDcgKzE2Nyw3IEBAIGVudW0gY2xhc3MgRGlkV3JhcCA6
IGJvb2w7CiBlbnVtIGNsYXNzIFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiAKLWNsYXNzIFBhZ2UgOiBw
dWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4geworY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVt
ZW50YWJsZTxQYWdlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFBhZ2U+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQYWdlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBm
cmllbmQgY2xhc3MgU2V0dGluZ3NCYXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Tb2Nr
ZXRQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQ
cm92aWRlci5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29j
a2V0UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFNvY2tldFByb3Zp
ZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFNvY2tl
dFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92
aWRlciogcHJvdmlkZXIpCiB7Ci0gICAgcmV0dXJuIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNy
ZWF0ZSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCB7IH0pOwor
ICAgIHJldHVybiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUodXJsLCBjbGllbnQsIHNl
c3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgeyB9LCBwcm92aWRlcik7CiB9CiAgICAgCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCShyZXZpc2lvbiAyNDAxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNv
Y2tldFN0cmVhbUhhbmRsZTsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKQEAgLTM4
LDcgKzM5LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgU29ja2V0UHJvdmlkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29j
a2V0UHJvdmlkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNvY2tldFByb3ZpZGVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFByb3ZpZGVyKTsgfQotICAgIHZp
cnR1YWwgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNv
bnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOworICAgIHZpcnR1YWwgUmVmPFNvY2tldFN0
cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRp
YWxQYXJ0aXRpb24sIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2aXJ0dWFs
IH5Tb2NrZXRQcm92aWRlcigpIHsgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI0MDEw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRl
ci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCi1jbGFzcyBO
ZXR3b3JraW5nQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtpbmdDb250ZXh0PiB7
CitjbGFzcyBOZXR3b3JraW5nQ29udGV4dCA6IHB1YmxpYyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5OZXR3b3JraW5nQ29udGV4dCgpID0gZGVmYXVsdDsK
IApAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VB
cHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAK
LSAgICB2aXJ0dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25z
dCA9IDA7Ci0KICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCA9IDA7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yOSw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIK
KyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDkgKzc4LDggQEAgc3RhdGljIHNp
emVfdCByZW1vdmVUZXJtaW5hdGlvbkNoYXJhY3RlcgogICAgIHJldHVybiBkYXRhTGVuZ3RoIC0g
MjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxWZWN0b3I8dWludDhfdD4sIGJvb2w+
PiBjb29raWVEYXRhRm9ySGFuZHNoYWtlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5JiBoZWFkZXJGaWVsZFByb3h5KQorc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxWZWN0b3I8
dWludDhfdD4sIGJvb2w+PiBjb29raWVEYXRhRm9ySGFuZHNoYWtlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiogbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkKIHsKLSAgICBhdXRvIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oaGVhZGVy
RmllbGRQcm94eS5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIApAQCAtMTAzLDcgKzEwNCw3IEBAIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW4KICAgICBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwogCiAgICAgaWYgKGhlYWRlckZpZWxkUHJveHkpIHsKLSAg
ICAgICAgYXV0byBjb29raWVEYXRhRnJvbU5ldHdvcmtTZXNzaW9uID0gY29va2llRGF0YUZvckhh
bmRzaGFrZShoZWFkZXJGaWVsZFByb3h5LnZhbHVlKCkpOworICAgICAgICBhdXRvIGNvb2tpZURh
dGFGcm9tTmV0d29ya1Nlc3Npb24gPSBjb29raWVEYXRhRm9ySGFuZHNoYWtlKG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlciA/IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24o
KSA6IG51bGxwdHIsICpoZWFkZXJGaWVsZFByb3h5KTsKICAgICAgICAgaWYgKCFjb29raWVEYXRh
RnJvbU5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSwgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgUEFMIHsKK2Ns
YXNzIFNlc3Npb25JRDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb247CisKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4geworcHVibGljOgor
ICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgflN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIoKSB7IH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCShyZXZp
c2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTIgKzQxLDEzIEBAIHR5
cGVkZWYgc3RydWN0IF9fQ0ZIVFRQTWVzc2FnZSogQ0ZIVFRQTWUKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ3JlZGVudGlhbDsKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CiAK
IGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBT
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVk
ZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8
U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYm
IGF1ZGl0RGF0YSwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc2Vz
c2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSksIHByb3ZpZGVy
KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUltcGwoKTsKIApAQCAtNTgs
NyArNTksNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kSW50
ZXJuYWwoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJM
JiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYsIGNvbnN0IFN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2b2lkIGNyZWF0ZVN0cmVhbXMoKTsKICAgICB2
b2lkIHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJveHkoKTsKQEAgLTEwMyw2
ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAg
IFN0cmluZyBtX2NyZWRlbnRpYWxQYXJ0aXRpb247CiAgICAgU291cmNlQXBwbGljYXRpb25BdWRp
dFRva2VuIG1fYXVkaXREYXRhOworICAgIFJlZlB0cjxjb25zdCBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyPiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiAKICAgICBTdHJlYW1CdWZmZXI8dWludDhf
dCwgMTAyNCAqIDEwMjQ+IG1fYnVmZmVyOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhC
dWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsQ0ZOZXQuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC05NSw3ICs5Niw3IEBAIHN0YXRpYyBpbmxpbmUgYXV0byBj
YWxsYmFja3NSdW5Mb29wTW9kZSgKICNlbmRpZgogfQogCi1Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0
RGF0YSkKK1NvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNl
QXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhLCBjb25zdCBTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyKiBwcm92aWRlcikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkK
ICAgICAsIG1fY29ubmVjdGluZ1N1YnN0YXRlKE5ldykKICAgICAsIG1fY29ubmVjdGlvblR5cGUo
VW5rbm93bikKQEAgLTEwMyw2ICsxMDQsNyBAQCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2Nr
ZXRTdHJlYW1IYW5kCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2NyZWRl
bnRpYWxQYXJ0aXRpb24oY3JlZGVudGlhbFBhcnRpdGlvbikKICAgICAsIG1fYXVkaXREYXRhKFdU
Rk1vdmUoYXVkaXREYXRhKSkKKyAgICAsIG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlcihwcm92aWRl
cikKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50
ICVwIiwgdGhpcywgJm1fY2xpZW50KTsKIApAQCAtMzY3LDcgKzM2OSw3IEBAIGJvb2wgU29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6Z2V0U3RvcmVkQ08KIAogICAgIC8vIFRyeSBzeXN0ZW0gY3JlZGVu
dGlhbCBzdG9yYWdlIGZpcnN0LCBtYXRjaGluZyBIVFRQIGJlaGF2aW9yIChDRk5ldHdvcmsgb25s
eSBhc2tzIHRoZSBjbGllbnQgZm9yIHBhc3N3b3JkIGlmIGl0IGNvdWxkbid0IGZpbmQgaXQgaW4g
S2V5Y2hhaW4pLgogICAgIENyZWRlbnRpYWwgc3RvcmVkQ3JlZGVudGlhbDsKLSAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KG1fc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fc3RvcmFn
ZVNlc3Npb25Qcm92aWRlciA/IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Np
b24oKSA6IG51bGxwdHIpIHsKICAgICAgICAgc3RvcmVkQ3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNz
aW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShwcm90ZWN0
aW9uU3BhY2UpOwogICAgICAgICBpZiAoc3RvcmVkQ3JlZGVudGlhbC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBzdG9yZWRDcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9y
YWdlKCkuZ2V0KG1fY3JlZGVudGlhbFBhcnRpdGlvbiwgcHJvdGVjdGlvblNwYWNlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXI7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFt
SGFuZGxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+
IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQs
IFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9r
ZW4mJikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVybCwg
Y2xpZW50KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwg
Y29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgcHJvdmlkZXIpKTsgfQog
CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCkBAIC01Niw3ICs1Nyw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5h
bDsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
KGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50JiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogCiAgICAgc2l6ZV90IGJ1
ZmZlcmVkQW1vdW50KCkgZmluYWw7CiAgICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJ
bnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKQEAgLTY5LDYgKzcwLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtXcml0ZUJ1ZmZlclNpemUgPSA0ICogMTAyNDsK
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtSZWFkQnVmZmVyU2l6ZSA9IDQgKiAxMDI0OwogCisg
ICAgUmVmUHRyPGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Npb25Q
cm92aWRlcjsKICAgICBSZWZQdHI8VGhyZWFkPiBtX3dvcmtlclRocmVhZDsKICAgICBzdGQ6OmF0
b21pYzxib29sPiBtX3J1bm5pbmcgeyB0cnVlIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiB1
cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50KQorU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50JiBjbGllbnQsIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqIHByb3ZpZGVyKQog
ICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQorICAgICwgbV9zdG9yYWdlU2Vz
c2lvblByb3ZpZGVyKHByb3ZpZGVyKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFt
SGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCAmbV9jbGllbnQpOwogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHJldmlzaW9u
IDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC00OCwxMCArNDksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTb2NrZXRT
dHJlYW1FcnJvcjsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKK2NsYXNzIFN0b3Jh
Z2VTZXNzaW9uUHJvdmlkZXI7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgZmluYWwg
OiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0ZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBwbGljYXRp
b25BdWRpdFRva2VuJiYpOworICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4g
Y3JlYXRlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwgY29uc3Qg
U3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRs
ZUltcGwoKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
QEAgLTYwLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNoYWtl
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+JiYp
IGZpbmFsOwogICAgIHZvaWQgcGxhdGZvcm1DbG9zZSgpIGZpbmFsOwogcHJpdmF0ZToKLSAgICBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCYpOworICAgIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50JiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogCiAgICAgc2l6
ZV90IGJ1ZmZlcmVkQW1vdW50KCkgZmluYWw7CiAgICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9y
bVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKQEAgLTc4LDYgKzgwLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWwoU29ja2V0U3RyZWFtRXJyb3ImJik7CiAgICAgdm9p
ZCB3cml0ZVJlYWR5KCk7CiAKKyAgICBSZWZQdHI8Y29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRl
cj4gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyOworICAgIAogICAgIEdSZWZQdHI8R0lPU3RyZWFt
PiBtX3N0cmVhbTsKICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gbV9pbnB1dFN0cmVhbTsKICAg
ICBHUmVmUHRyPEdQb2xsYWJsZU91dHB1dFN0cmVhbT4gbV9vdXRwdXRTdHJlYW07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bFNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcyBMdGQuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3Iu
aCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJTb3Vw
TmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAj
aW5jbHVkZSAiVVJMU291cC5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGli
Lmg+CkBAIC04MSwxMiArODMsMTIgQEAgc3RhdGljIHZvaWQgc29ja2V0Q2xpZW50RXZlbnRDYWxs
YmFjayhHUwogfQogI2VuZGlmCiAKLVJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYs
IFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKQorUmVmPFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
LCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92
aWRlciogc3RvcmFnZVNlc3Npb25Qcm92aWRlcikKIHsKLSAgICBSZWY8U29ja2V0U3RyZWFtSGFu
ZGxlSW1wbD4gc29ja2V0ID0gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVy
bCwgY2xpZW50KSk7CisgICAgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IHNvY2tldCA9IGFk
b3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc3RvcmFnZVNl
c3Npb25Qcm92aWRlcikpOwogCiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDYxLCA5MCkKLSAg
ICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gc3RvcmFnZVNlc3Npb25Qcm92aWRlciA/IHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3Jh
Z2VTZXNzaW9uKCkgOiBudWxscHRyOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQog
ICAgICAgICByZXR1cm4gc29ja2V0OwogCkBAIC05Niw3ICs5OCw2IEBAIFJlZjxTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsPiBTb2NrZXRTdHJlYW0KICAgICAgICAgdXJsLnByb3RvY29sSXMoIndzcyIp
ID8gcmVpbnRlcnByZXRfY2FzdDxTb3VwU2Vzc2lvbkNvbm5lY3RQcm9ncmVzc0NhbGxiYWNrPihj
b25uZWN0UHJvZ3Jlc3NDYWxsYmFjaykgOiBudWxscHRyLAogICAgICAgICByZWludGVycHJldF9j
YXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGNvbm5lY3RlZENhbGxiYWNrKSwgJnByb3RlY3RlZFNv
Y2tldFN0cmVhbUhhbmRsZS5sZWFrUmVmKCkpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2Vz
c2lvbklEKTsKICAgICB1bnNpZ25lZCBwb3J0ID0gdXJsLnBvcnQoKSA/IHVybC5wb3J0KCkudmFs
dWUoKSA6ICh1cmwucHJvdG9jb2xJcygid3NzIikgPyA0NDMgOiA4MCk7CiAgICAgR1JlZlB0cjxH
U29ja2V0Q2xpZW50PiBzb2NrZXRDbGllbnQgPSBhZG9wdEdSZWYoZ19zb2NrZXRfY2xpZW50X25l
dygpKTsKICAgICBpZiAodXJsLnByb3RvY29sSXMoIndzcyIpKSB7CkBAIC0xMTEsOCArMTEyLDkg
QEAgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IFNvY2tldFN0cmVhbQogICAgIHJldHVybiBz
b2NrZXQ7CiB9CiAKLVNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUlt
cGwoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50KQorU29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVy
bCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIqIHByb3ZpZGVyKQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50
KQorICAgICwgbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyKHByb3ZpZGVyKQogICAgICwgbV9jYW5j
ZWxsYWJsZShhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSkpCiB7CiAgICAgTE9HKE5ldHdv
cmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsICZtX2NsaWVu
dCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0wMS0xNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNp
bmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1NvY2tldFN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldFN0
cmVhbTo6TmV0d29ya1NvY2tldFN0cmVhbSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQ
cm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGVT
b2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OldlYkNvb2tpZUphcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oOgorCiAyMDE5LTAxLTE2ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXcgU1BJ
IGZvciBjb250cm9sbGluZyBnZXRVc2VyTWVkaWEKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgx
LDcgKzI4MSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWEKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+c291cmNl
QXBwbGljYXRpb25BdWRpdERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29ja2V0U3Ry
ZWFtcy5zZXQoaWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFdURk1vdmUo
dXJsKSwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9u
LCBXVEZNb3ZlKHRva2VuKSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0cmVhbXMuc2V0KGlkZW50
aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNzLmdldCgp
LCBXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZpZXIsIG1f
Y29ubmVjdGlvbiwgV1RGTW92ZSh0b2tlbikpKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCBpZGVudGlmaWVyKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRTdHJlYW0uY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogCiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb2Nr
ZXRTdHJlYW1FcnJvci5oPgpAQCAtMzQsMTUgKzM1LDE1IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVhbT4gTmV0
d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZp
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRv
a2VuJiYgYXVkaXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtTb2NrZXRT
dHJlYW06OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFVSTCYmIHVybCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRp
b24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE5ldHdvcmtTb2NrZXRTdHJlYW0oV1RGTW92ZSh1cmwpLCBzZXNzaW9uSUQsIGNy
ZWRlbnRpYWxQYXJ0aXRpb24sIGlkZW50aWZpZXIsIGNvbm5lY3Rpb24sIFdURk1vdmUoYXVkaXRE
YXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTb2NrZXRTdHJlYW0obmV0
d29ya1Byb2Nlc3MsIFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9u
LCBpZGVudGlmaWVyLCBjb25uZWN0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0KIAotTmV0
d29ya1NvY2tldFN0cmVhbTo6TmV0d29ya1NvY2tldFN0cmVhbShVUkwmJiB1cmwsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKK05ldHdvcmtTb2NrZXRTdHJlYW06Ok5ldHdv
cmtTb2NrZXRTdHJlYW0oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBVUkwmJiB1cmws
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0
aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNv
dXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKICAgICA6IG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQogICAgICwgbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2lt
cGwoU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKHVybCwgKnRoaXMsIHNlc3Npb25JRCwg
Y3JlZGVudGlhbFBhcnRpdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpKSkKKyAgICAsIG1faW1wbChT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUodXJsLCAqdGhpcywgc2Vzc2lvbklELCBjcmVk
ZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSksIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCkucHRyKCkpKQogewog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJl
YW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRTdHJlYW0uaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5
LDExIEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFz
cyBOZXR3b3JrUHJvY2VzczsKKwogY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVy
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0
cmVhbT4gY3JlYXRlKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50
aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNl
QXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1NvY2tldFN0
cmVhbT4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgVVJMJiYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5lY3Rpb24m
LCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CiAgICAgfk5ldHdvcmtT
b2NrZXRTdHJlYW0oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC02Miw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgSVBD
OjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAgICBOZXR3b3JrU29j
a2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFs
UGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291cmNlQXBw
bGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0oTmV0d29ya1By
b2Nlc3MmLCBVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBh
cnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXRUb2tlbiYmKTsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBJ
UEM6OkNvbm5lY3Rpb24mIG1fY29ubmVjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIobmV0d29ya1Byb2Nlc3MsIHNlc3Np
b25JRCkpOyB9CisgICAgCitwcml2YXRlOgorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgUEFMOjpTZXNzaW9uSUQm
IHNlc3Npb25JRCkKKyAgICAgICAgOiBtX25ldHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRyKG5ldHdv
cmtQcm9jZXNzKSkKKyAgICAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpIHsgfQorCisgICAg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZp
bmFsCisgICAgeworICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKG1fc2Vz
c2lvbklEKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgV2Vha1B0cjxO
ZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzQ0NSw2
ICszNDQ1LDcgQEAKIAkJNUM4REQzODExRkU0NTVDQTAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxh
eVF1aXJrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVBdXRvcGxh
eVF1aXJrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1NjgwMURGN0YwNTUw
MEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2llcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDOUU1NjgxMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2llcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyog
TmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNBMjZEN0YyMTdBQkJCNjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5n
V2FybmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2Fm
ZUJyb3dzaW5nV2FybmluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMjZE
ODAyMTdBQkJCNjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NhZmVCcm93c2luZ1dhcm5pbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNhZmVCcm93
c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FmZUJyb3dz
aW5nV2FybmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQzOSw2ICs2NDQw
LDcgQEAKIAkJCQk1QzBCMTc3RDFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVh
bS5jcHAgKi8sCiAJCQkJNUMwQjE3N0UxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRT
dHJlYW0uaCAqLywKIAkJCQk1QzBCMTc3RjFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tl
dFN0cmVhbS5tZXNzYWdlcy5pbiAqLywKKwkJCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyog
TmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk0NjIxMDdENzFGMzhEQkQz
MDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovLAogCQkJCTVDRTg1QjFGMUM4OEU2NDMwMDcwQkZD
RSAvKiBQaW5nTG9hZC5oICovLAogCQkJCTgzQTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAvKiBQcmVj
b25uZWN0VGFzay5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFdlYlNvY2tl
dFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGU+
IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1
cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNl
c3Npb25Qcm92aWRlciopCiB7CiAgICAgcmV0dXJuIFdlYlNvY2tldFN0cmVhbTo6Y3JlYXRlKHVy
bCwgY2xpZW50LCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwogfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRl
ci5oCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViU29ja2V0UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U29ja2V0UHJvdmlkZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU29j
a2V0UHJvdmlkZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29ja2V0UHJv
dmlkZXIpOyB9Ci0gICAgUmVmPFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29j
a2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24p
IGZpbmFsOworICAgIFJlZjxXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZVNvY2tl
dFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBj
b25zdCBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKikgZmluYWw7CiAgICAgdmlydHVh
bCB+V2ViU29ja2V0UHJvdmlkZXIoKSB7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAkocmV2aXNpb24gMjQwMTA0
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMTggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlN0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CisgICAg
Ly8gTmV0d29ya1N0b3JhZ2VTZXNzaW9ucyBhcmUgYWNjZXNzZWQgb25seSBpbiB0aGUgTmV0d29y
a1Byb2Nlc3MuCisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vz
c2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK307CisKK1dlYkNvb2tpZUph
cjo6V2ViQ29va2llSmFyKCkKKyAgICA6IFdlYkNvcmU6OkNvb2tpZUphcihhZG9wdFJlZigqbmV3
IFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpKSB7IH0KKwogU3RyaW5nIFdlYkNvb2tpZUphcjo6
Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgJKHJldmlzaW9uIDI0MDEw
NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBX
ZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikg
Y29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1l
bnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOworcHJpdmF0
ZToKKyAgICBXZWJDb29raWVKYXIoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDEt
MTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24gaW4gV2Vi
Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
NTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0w
NCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NQIHZpb2xh
dGlvbiByZXBvcnRzIHNob3VsZCBieXBhc3MgQ1NQIGNoZWNrcwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGFnZVN0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitjbGFz
cyBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBhZ2VTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKTsgfQorCisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9wYWdlKQor
ICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFn
ZVNlc3Npb24obV9wYWdlLT5zZXNzaW9uSUQoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHZvaWQgc2V0UGFnZShXZWJDb3JlOjpQYWdlJiBwYWdlKQorICAgIHsKKyAg
ICAgICAgbV9wYWdlID0gbWFrZVdlYWtQdHIocGFnZSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFdlYWtQdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdh
Y3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0
Nyw3IEBACiAJCTU5OEFEOTI4MTIwMUNGMzIwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blByb3ZpZGVyTW9jay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5OEFEOTI3MTIwMUNGMzIwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9jay5tbSAqLzsgfTsKIAkJNTk4QUQ5MkExMjAxQ0YzQjAwQUJBRTRFIC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTI5MTIwMUNGM0IwMEFCQUU0RSAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmggKi87IH07CiAJCTU5OEFE
QTQ2MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OThBREE0NTEyMDIy
NzUwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDOUVGMkY1MjFGMDYxQkUw
MDNCREM1NiAvKiBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RUYyRjQyMUYwNjFCRTAwM0JEQzU2IC8q
IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi87IH07CiAJCTVDRTQ0RjRBMjA2RDcwRUEw
MDNFRkQwMSAvKiBQaW5nSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0U0NEY0OTIwNkQ3MEU5MDAzRUZEMDEgLyogUGluZ0hhbmRsZS5oICov
OyB9OwogCQk1RDdCRjgxNDBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDdCRjgxMjBDMkExRDkw
MDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUQ3QkY4MTUwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3Bl
Y3Rvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVE
N0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi87IH07CkBAIC05ODYs
NiArOTg3LDcgQEAKIAkJNTk4QUQ5MjcxMjAxQ0YzMjAwQUJBRTRFIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU5OEFEOTI5MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk4QURBNDUxMjAyMjc1MDAwQUJBRTRFIC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzlFRjJGNDIxRjA2MUJFMDAzQkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGFnZVN0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIuaDsgcGF0aCA9IFdlYkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNUNFNDRGNDkyMDZENzBF
OTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gUGluZ0hhbmRsZS5oOyBwYXRoID0gV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTVEN0JGODEyMEMyQTFEOTAwMDhDRTA2RCAvKiBX
ZWJJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3Bl
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdCRjgxMzBDMkExRDkwMDA4
Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkluc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI1NTQsNiArMjU1Niw3IEBACiAJCQkJQTEwQzFENDQxODIwMkZGQjAwMzY4ODNBIC8qIGlvcyAq
LywKIAkJCQlCODI5NThEMTEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggKi8s
CiAJCQkJQjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSAqLywK
KwkJCQk1QzlFRjJGNDIxRjA2MUJFMDAzQkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIuaCAqLywKIAkJCQk1Q0U0NEY0OTIwNkQ3MEU5MDAzRUZEMDEgLyogUGluZ0hhbmRsZS5oICov
LAogCQkJCTdDMDFDQjgxMTczNDM1QzkwMEM1RDgwNyAvKiBQb3B1cE1lbnVNYWMuaCAqLywKIAkJ
CQk3QzAxQ0I4MjE3MzQzNUM5MDBDNUQ4MDcgLyogUG9wdXBNZW51TWFjLm1tICovLApAQCAtMjkz
NCw2ICsyOTM3LDcgQEAKIAkJCQlFMTUzMUJEODIxODdCOTU0MDAyRTNGODEgLyogTlNVUkxEb3du
bG9hZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3OUIxRDU3QUJFRjAwQUI4NUVBIC8q
IE9iakNFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0Mzc5RDFENTdBQkVG
MDBBQjg1RUEgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVDOUVGMkY1MjFGMDYxQkUwMDNCREM1NiAvKiBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUNFNDRGNEEyMDZENzBFQTAwM0VGRDAxIC8qIFBpbmdIYW5k
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMEMxRDVGMTgyMDMwMEUwMDM2ODgzQSAvKiBQb3B1
cE1lbnVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDFDQjg1MTczNDM1QzkwMEM1RDgwNyAv
KiBQb3B1cE1lbnVNYWMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTYgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVz
aW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTI5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYkNh
Y2hlLm1tOgorICAgICAgICAoK1tXZWJDYWNoZSBhZGRJbWFnZVRvQ2FjaGU6Zm9yVVJMOmZvckZy
YW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmll
dyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZl
cmVuY2VzOmdyb3VwTmFtZTpdKToKKwogMjAxOS0wMS0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZHVjZSB1c2Ugb2YgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCShyZXZpc2lvbiAyNDAxMDQpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg+CiAj
aW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIApAQCAt
NTAsNiArNTEsMTMgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgogI2Vu
ZGlmCiAKK2NsYXNzIERlZmF1bHRTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFdlYkNv
cmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgeworICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAgcmV0
dXJuICZXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bigpOworICAgIH0KK307CisKIEBpbXBsZW1lbnRhdGlvbiBXZWJDYWNoZQogCiArICh2b2lkKWlu
aXRpYWxpemUKQEAgLTE2NSw3ICsxNzMsOCBAQCArIChib29sKWFkZEltYWdlVG9DYWNoZTooQ0dJ
bWFnZVJlZilpbWFnCiAgICAgaWYgKCFpbWFnZSB8fCAhdXJsIHx8ICFbW3VybCBhYnNvbHV0ZVN0
cmluZ10gbGVuZ3RoXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFdlYkNv
cmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5hZGRJbWFnZVRvQ2FjaGUoUmV0YWluUHRyPENH
SW1hZ2VSZWY+KGltYWdlKSwgdXJsLCBmcmFtZSA/IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT5k
b21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIDogZW1wdHlTdHJpbmcoKSwgUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSwgV2ViQ29yZTo6Q29va2llSmFyOjpjcmVhdGUoKS5wdHIoKSk7
CisgICAgYXV0byBwcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgRGVmYXVsdFN0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIpOworICAgIHJldHVybiBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCku
YWRkSW1hZ2VUb0NhY2hlKFJldGFpblB0cjxDR0ltYWdlUmVmPihpbWFnZSksIHVybCwgZnJhbWUg
PyBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVt
cHR5U3RyaW5nKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdlYkNvcmU6
OkNvb2tpZUphcjo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKS5wdHIoKSk7CiB9CiAKICsgKHZv
aWQpcmVtb3ZlSW1hZ2VGcm9tQ2FjaGVGb3JVUkw6KE5TVVJMICopdXJsCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNDAxMDQpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJE
T01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKKyNpbXBvcnQg
IlBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW1wb3J0ICJTdG9yYWdlVGhyZWFkLmgi
CiAjaW1wb3J0ICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbXBvcnQgIldlYkFwcGxp
Y2F0aW9uQ2FjaGVJbnRlcm5hbC5oIgpAQCAtMTQ0MCwxMyArMTQ0MSwxNCBAQCAtICh2b2lkKV9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgX3ByaXZhdGUtPmdyb3VwID0gV2Vi
Vmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5f
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZp
ZXcoc2VsZik7CiAKKyAgICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyOjpjcmVhdGUoKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJh
dGlvbigKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpLAogICAg
ICAgICBTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVy
OjpjcmVhdGUoKSwKICAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0
ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZShzZWxmKSwKLSAgICAgICAgQ29v
a2llSmFyOjpjcmVhdGUoKQorICAgICAgICBDb29raWVKYXI6OmNyZWF0ZShzdG9yYWdlUHJvdmlk
ZXIuY29weVJlZigpKQogICAgICk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsK
QEAgLTE0NzcsNiArMTQ3OSw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmEKICAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0gJl9wcml2
YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24udmlzaXRlZExpbmtTdG9yZSA9ICZfcHJpdmF0ZS0+Z3JvdXAtPnZpc2l0ZWRMaW5rU3RvcmUo
KTsKICAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKKyAgICBzdG9yYWdlUHJvdmlkZXItPnNldFBhZ2UoKl9wcml2YXRlLT5wYWdlKTsKIAog
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXRHcm91cE5hbWUoZ3JvdXBOYW1lKTsKIApAQCAtMTcwNiwx
MyArMTcwOSwxNCBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOCiAg
ICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUs
IF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICBf
cHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7CiAKKyAgICBhdXRvIHN0b3JhZ2VQcm92
aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUoKTsKICAgICBQYWdlQ29u
ZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbigKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJF
ZGl0b3JDbGllbnQ+KHNlbGYpLAogICAgICAgICBTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCksCiAg
ICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgV2ViQ29yZTo6Q2Fj
aGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNy
ZWF0ZShzZWxmKSwKLSAgICAgICAgQ29va2llSmFyOjpjcmVhdGUoKQorICAgICAgICBDb29raWVK
YXI6OmNyZWF0ZShzdG9yYWdlUHJvdmlkZXIuY29weVJlZigpKQogICAgICk7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudElPUyhzZWxmKTsK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTczNCw2ICsxNzM4LDcgQEAgLSAoaWQpaW5p
dFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBs
dWdpbkluZm9Qcm92aWRlciA9ICZXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpOwog
CiAgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CisgICAgc3RvcmFnZVByb3ZpZGVyLT5zZXRQYWdlKCpfcHJpdmF0ZS0+cGFnZSk7CiAgICAg
CiAgICAgW3NlbGYgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOllFU107CiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxOS0wMS0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vz
c2lvbiBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTM1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6
CisKIDIwMTktMDEtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRPTUNv
cmVDbGFzc2VzLmgiCiAjaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5oIgorI2luY2x1ZGUgIlBhZ2VTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRlICJQbHVn
aW5WaWV3LmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRpb25DYWNoZS5oIgpAQCAtMzEwNiwxMyAr
MzEwNywxNCBAQCBIUkVTVUxUIFdlYlZpZXc6OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtCiAKICAg
ICBtX2luc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CiAKKyAg
ICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVh
dGUoKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKAogICAgICAgICBtYWtl
VW5pcXVlUmVmPFdlYkVkaXRvckNsaWVudD4odGhpcyksCiAgICAgICAgIFNvY2tldFByb3ZpZGVy
OjpjcmVhdGUoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4oKSwK
ICAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAg
ICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgpLAotICAgICAgICBDb29raWVKYXI6OmNyZWF0ZSgp
CisgICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKHN0b3JhZ2VQcm92aWRlci5jb3B5UmVmKCkpCiAg
ICAgKTsKICAgICBjb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGll
bnQodGhpcyk7CiAgICAgY29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJD
b250ZXh0TWVudUNsaWVudCh0aGlzKTsKQEAgLTMxMjgsNiArMzEzMCw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6aW5pdFdpdGhGcmFtZShSRUNUIGZyYW0KICAgICBjb25maWd1cmF0aW9uLnBsdWdpbklu
Zm9Qcm92aWRlciA9ICZXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpOwogCiAgICAg
bV9wYWdlID0gbmV3IFBhZ2UoV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgc3RvcmFnZVBy
b3ZpZGVyLT5zZXRQYWdlKCpwYWdlKTsKICAgICBwcm92aWRlR2VvbG9jYXRpb25UbyhtX3BhZ2Us
ICpuZXcgV2ViR2VvbG9jYXRpb25DbGllbnQodGhpcykpOwogCiAgICAgbV9wYWdlLT5hZGRMYXlv
dXRNaWxlc3RvbmVzKHsgRGlkRmlyc3RMYXlvdXQsIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359382</attachid>
            <date>2019-01-17 09:01:16 -0800</date>
            <delta_ts>2019-01-17 11:05:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193529-20190117090115.patch</filename>
            <type>text/plain</type>
            <size>61634</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE93bmVyc2hpcCBvZiB0
aGUgbWFwIHRoYXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBzZWFyY2hl
cyBuZWVkcyB0byBtb3ZlIHRvIHRoZSBXZWJLaXQvV2ViS2l0TGVnYWN5IGxheWVyLAorICAgICAg
ICBzbyB3aGVuIFdlYkNvcmUgdXNlZCB0byBsb29rIGluIHRoaXMgbWFwIGl0IG5lZWRzIHRvIGNh
bGwgYSBjbGllbnQgZnVuY3Rpb24gdG8gYXNrIHRoZSBsYXllciBhYm92ZSBpdCBmb3IgdGhlIHN0
b3JhZ2Ugb2JqZWN0LgorICAgICAgICBJJ3ZlIGNhbGxlZCB0aGlzIGNsaWVudCBTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyOjpzdG9yYWdlU2Vzc2lvbi4gIFJpZ2h0IG5vdyBpdCBqdXN0IGxvb2tzIGlu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24sCisgICAgICAgIGJ1dCB0aGlz
IGFkZGVkIGFic3RyYWN0aW9uIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1vdmUgdGhlIGN1cnJlbnRs
eSBwcm9jZXNzLWdsb2JhbCBtYXAgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIE5ldHdvcmtQcm9jZXNz
IG9iamVjdC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Q29va2llSmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVK
YXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzRW5h
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmRlbGV0ZUNv
b2tpZSk6CisgICAgICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1Nv
Y2tldFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFByb3ZpZGVyOjpjcmVh
dGVTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIHBhZ2UvU29ja2V0UHJvdmlkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvb2tpZURhdGFGb3JIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjp+U3RvcmFnZVNlc3Npb25Qcm92aWRl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0
cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Z2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZSk6CisKIDIwMTktMDEtMTYgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVcGRh
dGUgdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIHRvIGFjdHVhbGx5IHVzZSB2ZXJ0
ZXggYnVmZmVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEyMyw3ICsx
MjQsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMCiAgICAgICAg
IFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQgPSBwYWdlID8gcGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwogICAgICAgICBTdHJpbmcgcGFydGl0aW9uID0gbV9kb2N1bWVudC0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKTsKLSAgICAgICAgbV9oYW5kbGUgPSBtX3NvY2tldFByb3Zp
ZGVyLT5jcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUobV9oYW5kc2hha2UtPnVybCgpLCAqdGhpcywg
c2Vzc2lvbklELCBwYXJ0aXRpb24pOworICAgICAgICBtX2hhbmRsZSA9IG1fc29ja2V0UHJvdmlk
ZXItPmNyZWF0ZVNvY2tldFN0cmVhbUhhbmRsZShtX2hhbmRzaGFrZS0+dXJsKCksICp0aGlzLCBz
ZXNzaW9uSUQsIHBhcnRpdGlvbiwgZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAy
LDYgKzE5MDIsNyBAQAogCQk1QzQzMDRCMTE5MUFDOTA4MDAwRTJCQzAgLyogRVhUU2hhZGVyVGV4
dHVyZUxPRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM0MzA0QUUxOTFBQzkwODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCAqLzsgfTsK
IAkJNUM0MzA0QjYxOTFBRUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0MzA0QjQxOTFB
RUY0NjAwMEUyQkMwIC8qIEpTRVhUU2hhZGVyVGV4dHVyZUxPRC5oICovOyB9OwogCQk1QzdDODhE
ODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBT
b2NrZXRQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTVDOUVGMkYzMjFGMDYxOTAwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlF
RjJGMjIxRjA2MTcxMDAzQkRDNTYgLyogU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDQTFERUM2MUY3MUYx
QzcwMEU3MUJEMyAvKiBIVFRQSGVhZGVyRmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQTFERUM0MUY3MUU2ODcwMEU3MUJEMyAvKiBIVFRQSGVh
ZGVyRmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1Q0IzN0ZGRjFDNjJEMkExMDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzN0ZGRDFDNjJE
Mjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0b3JNb2NrLmggKi87IH07CiAJCTVDQkM4REFEMUFB
QTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzhEQUIxQUFBMzAyMjAwRTFD
ODAzIC8qIE1lZGlhQWNjZXNzaWJpbGl0eVNvZnRMaW5rLmggKi87IH07CkBAIC04OTA4LDYgKzg5
MDksNyBAQAogCQk1QzlCODYwQjFDMjFFM0M2MDAxMTBGMzYgLyogTmV0d29ya0xvYWRNZXRyaWNz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0xvYWRN
ZXRyaWNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFRjE2RjFERkY3MTk5
MDBBNDUyRTMgLyogWFBhdGhHcmFtbWFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFhQYXRoR3JhbW1hci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDOUVGMTcwMURGRjcxOTkwMEE0NTJFMyAvKiBYUGF0aEdyYW1tYXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWFBhdGhHcmFtbWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDOUVGMkYyMjFGMDYxNzEwMDNCREM1NiAvKiBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMURFQzIxRjcxRTY4NjAw
RTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIVFRQSGVhZGVyRmllbGQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0ExREVDNDFGNzFFNjg3MDBFNzFCRDMgLyogSFRUUEhlYWRlckZpZWxkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUVFBIZWFkZXJGaWVsZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Q0IzN0ZGQzFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5p
bWF0b3JNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9s
bEFuaW1hdG9yTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTkzNSw2
ICsxOTkzNyw3IEBACiAJCQkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZS5oICovLAogCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCAqLywKIAkJCQk1QzY2OEU2NDFFN0M2QzM1MDBEMzJCM0IgLyogU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAgKi8sCisJCQkJNUM5RUYyRjIyMUYwNjE3MTAwM0JEQzU2
IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk0NjgyRDFGRjFGNzk3ODIzMDBD
ODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLywKIAkJCQlFMTgwODExMDE2RkNG
NDJFMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUUxODA4
MTE1MTZGQ0Y5Q0IwMEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oICovLApAQCAt
MzE1NDAsNiArMzE1NDMsNyBAQAogCQkJCTUxRTBCQjM4MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9y
YWdlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTBEMEU4MzBGRjQyNzI5MDBBQzI2NDQgLyog
U3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzNzYzNkMxQTJFNjhCQjAw
OUE3RUUyIC8qIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NUM5RUYyRjMyMUYwNjE5MDAwM0JEQzU2IC8qIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNjZEM0NEMUU4RUQ0OEYwMEFENjJFMyAvKiBTdG9yYWdlVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAw
QTYwMzMgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCAr
MzYsMTYgQEAKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgorI2luY2x1ZGUgIlN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1JlZjxDb29raWVKYXI+IENvb2tpZUphcjo6Y3JlYXRl
KFJlZjxTdG9yYWdlU2Vzc2lvblByb3ZpZGVyPiYmIHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKFdURk1vdmUoc3RvcmFnZVNlc3Np
b25Qcm92aWRlcikpKTsKK30KKwogSW5jbHVkZVNlY3VyZUNvb2tpZXMgQ29va2llSmFyOjpzaG91
bGRJbmNsdWRlU2VjdXJlQ29va2llcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIHJldHVybiAodXJsLnByb3RvY29sSXMoImh0dHBzIikgJiYgIWRvY3Vt
ZW50LmZvdW5kTWl4ZWRDb250ZW50KCkuY29udGFpbnMoU2VjdXJpdHlDb250ZXh0OjpNaXhlZENv
bnRlbnRUeXBlOjpBY3RpdmUpKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRl
U2VjdXJlQ29va2llczo6Tm87CkBAIC01Miw5ICs1OCw5IEBAIFNhbWVTaXRlSW5mbyBDb29raWVK
YXI6OnNhbWVTaXRlSW5mbyhjb24KICAgICByZXR1cm4geyB9OwogfQogCi1SZWY8Q29va2llSmFy
PiBDb29raWVKYXI6OmNyZWF0ZSgpCitDb29raWVKYXI6OkNvb2tpZUphcihSZWY8U3RvcmFnZVNl
c3Npb25Qcm92aWRlcj4mJiBzdG9yYWdlU2Vzc2lvblByb3ZpZGVyKQorICAgIDogbV9zdG9yYWdl
U2Vzc2lvblByb3ZpZGVyKFdURk1vdmUoc3RvcmFnZVNlc3Npb25Qcm92aWRlcikpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29va2llSmFyKTsKIH0KIAogQ29va2llSmFyOjp+Q29va2ll
SmFyKCkgPSBkZWZhdWx0OwpAQCAtNzMsNyArNzksNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29r
aWVzKERvY3VtZW50JiBkb2N1CiAgICAgfQogCiAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
cmVzdWx0OwotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisgICAgaWYgKGF1dG8qIHNlc3Np
b24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAg
IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTEwLDI0ICsxMTYsMjQgQEAgdm9pZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9j
dW1lbnQmIGRvYwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFn
ZUlEKCk7CiAgICAgfQogCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkK
ICAgICAgICAgc2Vzc2lvbi0+c2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGNvb2tpZVN0cmluZyk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotYm9vbCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkgY29uc3QKK2Jvb2wgQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVu
dCYpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuIHNlc3Npb24tPmNvb2tpZXNFbmFibGVkKCk7CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0
cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKLSAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkgeworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJl
c3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVz
KTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmZpcnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJl
Q29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAg
fQpAQCAtMTYwLDE2ICsxNjYsMTYgQEAgYm9vbCBDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29u
c3QgRG9jdQogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlE
KCk7CiAgICAgfQogCi0gICAgaWYgKGF1dG8qIHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKGRvY3VtZW50LnNlc3Npb25JRCgpKSkKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuIHNlc3Npb24tPmdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGNvb2tpZXMpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIENvb2tpZUphcjo6ZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgQ29v
a2llSmFyOjpkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIGlmIChhdXRvKiBzZXNzaW9uID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihkb2N1bWVudC5zZXNzaW9uSUQoKSkpCisg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VT
ZXNzaW9uKCkpCiAgICAgICAgIHNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUp
OwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBQQUwg
ewpAQCAtNDAsMTEgKzQxLDEzIEBAIGVudW0gY2xhc3MgU2VjdXJlQ29va2llc0FjY2Vzc2VkIDog
Ym9vbCAKIGNsYXNzIERvY3VtZW50Owogc3RydWN0IENvb2tpZTsKIHN0cnVjdCBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eTsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2NsYXNz
IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBDb29raWVKYXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDb29raWVKYXI+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvb2tpZUphcj4gY3JlYXRlKCk7CisgICAgc3RhdGlj
IFJlZjxDb29raWVKYXI+IGNyZWF0ZShSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJik7CiAg
ICAgCiAgICAgc3RhdGljIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5IGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJik7CiAKQEAgLTYz
LDYgKzY2LDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgU2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbyhjb25zdCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyBJbmNsdWRlU2VjdXJl
Q29va2llcyBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFVSTCYpOworICAgIENvb2tpZUphcihSZWY8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4mJik7CisK
K3ByaXZhdGU6CisgICAgUmVmPFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Np
b25Qcm92aWRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDYg
KzUzNSwxMCBAQCBSZWY8U3RvcmFnZU5hbWVzcGFjZT4gRW1wdHlTdG9yYWdlTmFtZXNwCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAorY2xhc3Mg
RW1wdHlTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgeworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9Cit9OworCiBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29u
ZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKQogewogICAgIFBhZ2VDb25maWd1cmF0aW9uIHBh
Z2VDb25maWd1cmF0aW9uIHsKQEAgLTU0Myw3ICs1NDcsNyBAQCBQYWdlQ29uZmlndXJhdGlvbiBw
YWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGUo
KSwKICAgICAgICAgQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBhZG9w
dFJlZigqbmV3IEVtcHR5QmFja0ZvcndhcmRDbGllbnQpLAotICAgICAgICBDb29raWVKYXI6OmNy
ZWF0ZSgpCisgICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKGFkb3B0UmVmKCpuZXcgRW1wdHlTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKSkKICAgICB9OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEVtcHR5Q2hyb21lQ2xpZW50PiBkdW1teUNocm9tZUNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtMTY2LDcgKzE2Nyw3IEBAIGVudW0gY2xhc3MgRGlkV3JhcCA6
IGJvb2w7CiBlbnVtIGNsYXNzIFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiAKLWNsYXNzIFBhZ2UgOiBw
dWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4geworY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVt
ZW50YWJsZTxQYWdlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFBhZ2U+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQYWdlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBm
cmllbmQgY2xhc3MgU2V0dGluZ3NCYXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Tb2Nr
ZXRQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQ
cm92aWRlci5jcHAJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU29j
a2V0UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFNvY2tldFByb3Zp
ZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikKK1JlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFNvY2tl
dFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92
aWRlciogcHJvdmlkZXIpCiB7Ci0gICAgcmV0dXJuIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNy
ZWF0ZSh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCB7IH0pOwor
ICAgIHJldHVybiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUodXJsLCBjbGllbnQsIHNl
c3Npb25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgeyB9LCBwcm92aWRlcik7CiB9CiAgICAgCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9Tb2NrZXRQcm92aWRlci5oCShyZXZpc2lvbiAyNDAxMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NvY2tldFByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNv
Y2tldFN0cmVhbUhhbmRsZTsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKQEAgLTM4
LDcgKzM5LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgU29ja2V0UHJvdmlkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29j
a2V0UHJvdmlkZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNvY2tldFByb3ZpZGVyPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNvY2tldFByb3ZpZGVyKTsgfQotICAgIHZp
cnR1YWwgUmVmPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNv
bnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24pOworICAgIHZpcnR1YWwgUmVmPFNvY2tldFN0
cmVhbUhhbmRsZT4gY3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRp
YWxQYXJ0aXRpb24sIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2aXJ0dWFs
IH5Tb2NrZXRQcm92aWRlcigpIHsgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI0MDEw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiU3RvcmFnZVNlc3Npb25Qcm92aWRl
ci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCi1jbGFzcyBO
ZXR3b3JraW5nQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtpbmdDb250ZXh0PiB7
CitjbGFzcyBOZXR3b3JraW5nQ29udGV4dCA6IHB1YmxpYyBTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5OZXR3b3JraW5nQ29udGV4dCgpID0gZGVmYXVsdDsK
IApAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VB
cHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAK
LSAgICB2aXJ0dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25z
dCA9IDA7Ci0KICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCA9IDA7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQgQEAKKwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yOSw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIK
KyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDkgKzc4LDggQEAgc3RhdGljIHNp
emVfdCByZW1vdmVUZXJtaW5hdGlvbkNoYXJhY3RlcgogICAgIHJldHVybiBkYXRhTGVuZ3RoIC0g
MjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxWZWN0b3I8dWludDhfdD4sIGJvb2w+
PiBjb29raWVEYXRhRm9ySGFuZHNoYWtlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFBy
b3h5JiBoZWFkZXJGaWVsZFByb3h5KQorc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxWZWN0b3I8
dWludDhfdD4sIGJvb2w+PiBjb29raWVEYXRhRm9ySGFuZHNoYWtlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiogbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkKIHsKLSAgICBhdXRvIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oaGVhZGVy
RmllbGRQcm94eS5zZXNzaW9uSUQpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIApAQCAtMTAzLDcgKzEwNCw3IEBAIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW4KICAgICBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwogCiAgICAgaWYgKGhlYWRlckZpZWxkUHJveHkpIHsKLSAg
ICAgICAgYXV0byBjb29raWVEYXRhRnJvbU5ldHdvcmtTZXNzaW9uID0gY29va2llRGF0YUZvckhh
bmRzaGFrZShoZWFkZXJGaWVsZFByb3h5LnZhbHVlKCkpOworICAgICAgICBhdXRvIGNvb2tpZURh
dGFGcm9tTmV0d29ya1Nlc3Npb24gPSBjb29raWVEYXRhRm9ySGFuZHNoYWtlKG1fc3RvcmFnZVNl
c3Npb25Qcm92aWRlciA/IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24o
KSA6IG51bGxwdHIsICpoZWFkZXJGaWVsZFByb3h5KTsKICAgICAgICAgaWYgKCFjb29raWVEYXRh
RnJvbU5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSwgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgUEFMIHsKK2Ns
YXNzIFNlc3Npb25JRDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb247CisKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RvcmFnZVNlc3Npb25Qcm92aWRlcj4geworcHVibGljOgor
ICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgflN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIoKSB7IH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCShyZXZp
c2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTIgKzQxLDEzIEBAIHR5
cGVkZWYgc3RydWN0IF9fQ0ZIVFRQTWVzc2FnZSogQ0ZIVFRQTWUKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ3JlZGVudGlhbDsKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiBj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CiAK
IGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9uLCBT
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiBhdWRpdERhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc2Vzc2lvbklELCBjcmVk
ZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8
U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYm
IGF1ZGl0RGF0YSwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc2Vz
c2lvbklELCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSksIHByb3ZpZGVy
KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUltcGwoKTsKIApAQCAtNTgs
NyArNTksNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kSW50
ZXJuYWwoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEo
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJM
JiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3Jl
ZGVudGlhbFBhcnRpdGlvbiwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYsIGNvbnN0IFN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIqKTsKICAgICB2b2lkIGNyZWF0ZVN0cmVhbXMoKTsKICAgICB2
b2lkIHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJveHkoKTsKQEAgLTEwMyw2
ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAg
IFN0cmluZyBtX2NyZWRlbnRpYWxQYXJ0aXRpb247CiAgICAgU291cmNlQXBwbGljYXRpb25BdWRp
dFRva2VuIG1fYXVkaXREYXRhOworICAgIFJlZlB0cjxjb25zdCBTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyPiBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiAKICAgICBTdHJlYW1CdWZmZXI8dWludDhf
dCwgMTAyNCAqIDEwMjQ+IG1fYnVmZmVyOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhC
dWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsQ0ZOZXQuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCIKICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC05NSw3ICs5Niw3IEBAIHN0YXRpYyBpbmxpbmUgYXV0byBj
YWxsYmFja3NSdW5Mb29wTW9kZSgKICNlbmRpZgogfQogCi1Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQmIGNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGNyZWRlbnRpYWxQYXJ0aXRpb24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0
RGF0YSkKK1NvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29u
c3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgU291cmNl
QXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhLCBjb25zdCBTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyKiBwcm92aWRlcikKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkK
ICAgICAsIG1fY29ubmVjdGluZ1N1YnN0YXRlKE5ldykKICAgICAsIG1fY29ubmVjdGlvblR5cGUo
VW5rbm93bikKQEAgLTEwMyw2ICsxMDQsNyBAQCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2Nr
ZXRTdHJlYW1IYW5kCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2NyZWRl
bnRpYWxQYXJ0aXRpb24oY3JlZGVudGlhbFBhcnRpdGlvbikKICAgICAsIG1fYXVkaXREYXRhKFdU
Rk1vdmUoYXVkaXREYXRhKSkKKyAgICAsIG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlcihwcm92aWRl
cikKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50
ICVwIiwgdGhpcywgJm1fY2xpZW50KTsKIApAQCAtMzY3LDcgKzM2OSw3IEBAIGJvb2wgU29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6Z2V0U3RvcmVkQ08KIAogICAgIC8vIFRyeSBzeXN0ZW0gY3JlZGVu
dGlhbCBzdG9yYWdlIGZpcnN0LCBtYXRjaGluZyBIVFRQIGJlaGF2aW9yIChDRk5ldHdvcmsgb25s
eSBhc2tzIHRoZSBjbGllbnQgZm9yIHBhc3N3b3JkIGlmIGl0IGNvdWxkbid0IGZpbmQgaXQgaW4g
S2V5Y2hhaW4pLgogICAgIENyZWRlbnRpYWwgc3RvcmVkQ3JlZGVudGlhbDsKLSAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KG1fc2Vzc2lvbklEKSkgeworICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fc3RvcmFn
ZVNlc3Npb25Qcm92aWRlciA/IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Np
b24oKSA6IG51bGxwdHIpIHsKICAgICAgICAgc3RvcmVkQ3JlZGVudGlhbCA9IHN0b3JhZ2VTZXNz
aW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLmdldEZyb21QZXJzaXN0ZW50U3RvcmFnZShwcm90ZWN0
aW9uU3BhY2UpOwogICAgICAgICBpZiAoc3RvcmVkQ3JlZGVudGlhbC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBzdG9yZWRDcmVkZW50aWFsID0gc3RvcmFnZVNlc3Npb24tPmNyZWRlbnRpYWxTdG9y
YWdlKCkuZ2V0KG1fY3JlZGVudGlhbFBhcnRpdGlvbiwgcHJvdGVjdGlvblNwYWNlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKK2NsYXNzIFN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXI7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFt
SGFuZGxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+
IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQs
IFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9r
ZW4mJikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKHVybCwg
Y2xpZW50KSk7IH0KKyAgICBzdGF0aWMgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwg
Y29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciogcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgcHJvdmlkZXIpKTsgfQog
CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCkBAIC01Niw3ICs1Nyw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5h
bDsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
KGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50JiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogCiAgICAgc2l6ZV90IGJ1
ZmZlcmVkQW1vdW50KCkgZmluYWw7CiAgICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmRJ
bnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKQEAgLTY5LDYgKzcwLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtXcml0ZUJ1ZmZlclNpemUgPSA0ICogMTAyNDsK
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtSZWFkQnVmZmVyU2l6ZSA9IDQgKiAxMDI0OwogCisg
ICAgUmVmUHRyPGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IG1fc3RvcmFnZVNlc3Npb25Q
cm92aWRlcjsKICAgICBSZWZQdHI8VGhyZWFkPiBtX3dvcmtlclRocmVhZDsKICAgICBzdGQ6OmF0
b21pYzxib29sPiBtX3J1bm5pbmcgeyB0cnVlIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiB1
cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50KQorU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIqIHByb3Zp
ZGVyKQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KQorICAgICwgbV9zdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKHByb3ZpZGVyKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0
U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCAmbV9jbGllbnQpOwogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHJl
dmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCkBAIC00OCwxMCArNDksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
b2NrZXRTdHJlYW1FcnJvcjsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKK2NsYXNz
IFN0b3JhZ2VTZXNzaW9uUHJvdmlkZXI7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwg
ZmluYWwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IGNyZWF0ZShjb25zdCBVUkwmLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiwgU291cmNlQXBw
bGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0YXRpYyBSZWY8U29ja2V0U3RyZWFtSGFuZGxl
SW1wbD4gY3JlYXRlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwg
Y29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogICAgIHZpcnR1YWwgflNvY2tldFN0cmVh
bUhhbmRsZUltcGwoKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91
cmw7IH0KQEAgLTYwLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGxhdGZvcm1TZW5kSGFu
ZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFs
PENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYsIEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9v
bCk+JiYpIGZpbmFsOwogICAgIHZvaWQgcGxhdGZvcm1DbG9zZSgpIGZpbmFsOwogcHJpdmF0ZToK
LSAgICBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCYpOworICAgIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50JiwgY29uc3QgU3RvcmFnZVNlc3Npb25Qcm92aWRlciopOwogCiAg
ICAgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KCkgZmluYWw7CiAgICAgT3B0aW9uYWw8c2l6ZV90PiBw
bGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKQEAgLTc4LDYgKzgw
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWwoU29ja2V0U3RyZWFtRXJyb3ImJik7CiAg
ICAgdm9pZCB3cml0ZVJlYWR5KCk7CiAKKyAgICBSZWZQdHI8Y29uc3QgU3RvcmFnZVNlc3Npb25Q
cm92aWRlcj4gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyOworICAgIAogICAgIEdSZWZQdHI8R0lP
U3RyZWFtPiBtX3N0cmVhbTsKICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gbV9pbnB1dFN0cmVh
bTsKICAgICBHUmVmUHRyPEdQb2xsYWJsZU91dHB1dFN0cmVhbT4gbV9vdXRwdXRTdHJlYW07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbFNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAJKHJldmlzaW9uIDI0MDEw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcyBMdGQuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiU29ja2V0U3RyZWFt
RXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKICNpbmNsdWRl
ICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiVVJMU291cC5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRl
IDxnbGliLmg+CkBAIC04MSwxMiArODMsMTIgQEAgc3RhdGljIHZvaWQgc29ja2V0Q2xpZW50RXZl
bnRDYWxsYmFjayhHUwogfQogI2VuZGlmCiAKLVJlZjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYsIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKQorUmVmPFNvY2tldFN0cmVhbUhh
bmRsZUltcGw+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmLCBTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJiwgY29uc3QgU3RvcmFnZVNlc3Np
b25Qcm92aWRlciogc3RvcmFnZVNlc3Npb25Qcm92aWRlcikKIHsKLSAgICBSZWY8U29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbD4gc29ja2V0ID0gYWRvcHRSZWYoKm5ldyBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsKHVybCwgY2xpZW50KSk7CisgICAgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IHNvY2tl
dCA9IGFkb3B0UmVmKCpuZXcgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCh1cmwsIGNsaWVudCwgc3Rv
cmFnZVNlc3Npb25Qcm92aWRlcikpOwogCiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDYxLCA5
MCkKLSAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RvcmFnZVNlc3Npb25Qcm92aWRlciA/IHN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIt
PnN0b3JhZ2VTZXNzaW9uKCkgOiBudWxscHRyOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNz
aW9uKQogICAgICAgICByZXR1cm4gc29ja2V0OwogCkBAIC05Niw3ICs5OCw2IEBAIFJlZjxTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsPiBTb2NrZXRTdHJlYW0KICAgICAgICAgdXJsLnByb3RvY29sSXMo
IndzcyIpID8gcmVpbnRlcnByZXRfY2FzdDxTb3VwU2Vzc2lvbkNvbm5lY3RQcm9ncmVzc0NhbGxi
YWNrPihjb25uZWN0UHJvZ3Jlc3NDYWxsYmFjaykgOiBudWxscHRyLAogICAgICAgICByZWludGVy
cHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KGNvbm5lY3RlZENhbGxiYWNrKSwgJnByb3Rl
Y3RlZFNvY2tldFN0cmVhbUhhbmRsZS5sZWFrUmVmKCkpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oc2Vzc2lvbklEKTsKICAgICB1bnNpZ25lZCBwb3J0ID0gdXJsLnBvcnQoKSA/IHVybC5wb3J0
KCkudmFsdWUoKSA6ICh1cmwucHJvdG9jb2xJcygid3NzIikgPyA0NDMgOiA4MCk7CiAgICAgR1Jl
ZlB0cjxHU29ja2V0Q2xpZW50PiBzb2NrZXRDbGllbnQgPSBhZG9wdEdSZWYoZ19zb2NrZXRfY2xp
ZW50X25ldygpKTsKICAgICBpZiAodXJsLnByb3RvY29sSXMoIndzcyIpKSB7CkBAIC0xMTEsOCAr
MTEyLDkgQEAgUmVmPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IFNvY2tldFN0cmVhbQogICAgIHJl
dHVybiBzb2NrZXQ7CiB9CiAKLVNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhh
bmRsZUltcGwoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50
KQorU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBV
UkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIqIHByb3ZpZGVyKQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlKHVybCwg
Y2xpZW50KQorICAgICwgbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyKHByb3ZpZGVyKQogICAgICwg
bV9jYW5jZWxsYWJsZShhZG9wdEdSZWYoZ19jYW5jZWxsYWJsZV9uZXcoKSkpCiB7CiAgICAgTE9H
KE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsICZt
X2NsaWVudCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0wMS0xNiAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0
b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3Jl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVNvY2tldFN0cmVhbSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nv
Y2tldFN0cmVhbTo6TmV0d29ya1NvY2tldFN0cmVhbSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldFN0cmVhbS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFByb3ZpZGVyOjpj
cmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OldlYkNvb2tpZUphcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oOgorCiAyMDE5LTAx
LTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBu
ZXcgU1BJIGZvciBjb250cm9sbGluZyBnZXRVc2VyTWVkaWEKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNy
ZWEKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB0b2tlbiA9IHsgbV9uZXR3b3JrUHJvY2Vzcy0+
c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSB9OwogI2VuZGlmCi0gICAgbV9uZXR3b3JrU29j
a2V0U3RyZWFtcy5zZXQoaWRlbnRpZmllciwgTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFdU
Rk1vdmUodXJsKSwgc2Vzc2lvbklELCBjYWNoZVBhcnRpdGlvbiwgaWRlbnRpZmllciwgbV9jb25u
ZWN0aW9uLCBXVEZNb3ZlKHRva2VuKSkpOworICAgIG1fbmV0d29ya1NvY2tldFN0cmVhbXMuc2V0
KGlkZW50aWZpZXIsIE5ldHdvcmtTb2NrZXRTdHJlYW06OmNyZWF0ZShtX25ldHdvcmtQcm9jZXNz
LmdldCgpLCBXVEZNb3ZlKHVybCksIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZp
ZXIsIG1fY29ubmVjdGlvbiwgV1RGTW92ZSh0b2tlbikpKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVzdHJveVNvY2tldFN0cmVhbSh1aW50NjRfdCBpZGVudGlm
aWVyKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3Ry
ZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRTdHJlYW0uY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRTdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1NvY2tldFN0cmVhbS5oIgogCiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0U3RyZWFtTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Tb2NrZXRTdHJlYW1FcnJvci5oPgpAQCAtMzQsMTUgKzM1LDE1IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8TmV0d29ya1NvY2tldFN0cmVh
bT4gTmV0d29ya1NvY2tldFN0cmVhbTo6Y3JlYXRlKFVSTCYmIHVybCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU291cmNlQXBwbGljYXRpb25B
dWRpdFRva2VuJiYgYXVkaXREYXRhKQorUmVmPE5ldHdvcmtTb2NrZXRTdHJlYW0+IE5ldHdvcmtT
b2NrZXRTdHJlYW06OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFVSTCYm
IHVybCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQ
YXJ0aXRpb24sIHVpbnQ2NF90IGlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgU291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYgYXVkaXREYXRhKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE5ldHdvcmtTb2NrZXRTdHJlYW0oV1RGTW92ZSh1cmwpLCBzZXNzaW9u
SUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24sIGlkZW50aWZpZXIsIGNvbm5lY3Rpb24sIFdURk1vdmUo
YXVkaXREYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtTb2NrZXRTdHJl
YW0obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUodXJsKSwgc2Vzc2lvbklELCBjcmVkZW50aWFsUGFy
dGl0aW9uLCBpZGVudGlmaWVyLCBjb25uZWN0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSkpKTsKIH0K
IAotTmV0d29ya1NvY2tldFN0cmVhbTo6TmV0d29ya1NvY2tldFN0cmVhbShVUkwmJiB1cmwsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0aW9u
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKK05ldHdvcmtTb2NrZXRTdHJlYW06
Ok5ldHdvcmtTb2NrZXRTdHJlYW0oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBVUkwm
JiB1cmwsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFs
UGFydGl0aW9uLCB1aW50NjRfdCBpZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFNvdXJjZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmIGF1ZGl0RGF0YSkKICAgICA6IG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAg
LCBtX2ltcGwoU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlKHVybCwgKnRoaXMsIHNlc3Np
b25JRCwgY3JlZGVudGlhbFBhcnRpdGlvbiwgV1RGTW92ZShhdWRpdERhdGEpKSkKKyAgICAsIG1f
aW1wbChTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjcmVhdGUodXJsLCAqdGhpcywgc2Vzc2lvbklE
LCBjcmVkZW50aWFsUGFydGl0aW9uLCBXVEZNb3ZlKGF1ZGl0RGF0YSksIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUobmV0d29ya1Byb2Nlc3MsIHNlc3Npb25JRCkucHRyKCkp
KQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRTdHJlYW0uaAkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDkgKzM5LDExIEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBOZXR3b3JrUHJvY2VzczsKKwogY2xhc3MgTmV0d29ya1NvY2tldFN0cmVhbSA6IHB1
YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtTb2NrZXRTdHJlYW0+LCBwdWJsaWMgSVBDOjpNZXNzYWdl
U2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nv
Y2tldFN0cmVhbT4gY3JlYXRlKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBj
cmVkZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6
U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIHN0YXRpYyBSZWY8TmV0d29ya1Nv
Y2tldFN0cmVhbT4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgVVJMJiYsIFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0aXRpb24sIHVpbnQ2NF90LCBJUEM6OkNvbm5l
Y3Rpb24mLCBXZWJDb3JlOjpTb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW4mJik7CiAgICAgfk5l
dHdvcmtTb2NrZXRTdHJlYW0oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC02Miw3ICs2NCw3IEBAIHByaXZhdGU6CiAg
ICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGZpbmFsOwogICAg
IHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWw7CiAKLSAgICBOZXR3
b3JrU29ja2V0U3RyZWFtKFVSTCYmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVk
ZW50aWFsUGFydGl0aW9uLCB1aW50NjRfdCwgSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6U291
cmNlQXBwbGljYXRpb25BdWRpdFRva2VuJiYpOworICAgIE5ldHdvcmtTb2NrZXRTdHJlYW0oTmV0
d29ya1Byb2Nlc3MmLCBVUkwmJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVu
dGlhbFBhcnRpdGlvbiwgdWludDY0X3QsIElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlNvdXJj
ZUFwcGxpY2F0aW9uQXVkaXRUb2tlbiYmKTsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsK
ICAgICBJUEM6OkNvbm5lY3Rpb24mIG1fY29ubmVjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxwYWwvU2Vz
c2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
TmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXI+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIobmV0d29ya1Byb2Nlc3Ms
IHNlc3Npb25JRCkpOyB9CisgICAgCitwcml2YXRlOgorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgUEFMOjpTZXNz
aW9uSUQmIHNlc3Npb25JRCkKKyAgICAgICAgOiBtX25ldHdvcmtQcm9jZXNzKG1ha2VXZWFrUHRy
KG5ldHdvcmtQcm9jZXNzKSkKKyAgICAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpIHsgfQor
CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykKKyAgICAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9u
KG1fc2Vzc2lvbklEKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgV2Vh
a1B0cjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICBQQUw6OlNlc3Npb25J
RCBtX3Nlc3Npb25JRDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzQ0NSw2ICszNDQ1LDcgQEAKIAkJNUM4REQzODExRkU0NTVDQTAwRjJBNTU2IC8qIFdlYnNpdGVB
dXRvcGxheVF1aXJrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVB
dXRvcGxheVF1aXJrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1NjgwMURG
N0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2llcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDOUU1NjgxMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xp
Y2llcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVQb2xpY2ll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRD
NTYgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBMjZEN0YyMTdBQkJCNjAwRjk3QTM1IC8qIFdLU2FmZUJy
b3dzaW5nV2FybmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLU2FmZUJyb3dzaW5nV2FybmluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUNBMjZEODAyMTdBQkJCNjAwRjk3QTM1IC8qIFdLU2FmZUJyb3dzaW5nV2FybmluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NhZmVCcm93c2luZ1dhcm5pbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNBOTg1NDkyMTBCRUI1QTAwNTdFQjZCIC8qIFNh
ZmVCcm93c2luZ1dhcm5pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Fm
ZUJyb3dzaW5nV2FybmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQzOSw2
ICs2NDQwLDcgQEAKIAkJCQk1QzBCMTc3RDFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tl
dFN0cmVhbS5jcHAgKi8sCiAJCQkJNUMwQjE3N0UxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtT
b2NrZXRTdHJlYW0uaCAqLywKIAkJCQk1QzBCMTc3RjFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29y
a1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbiAqLywKKwkJCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRD
NTYgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaCAqLywKIAkJCQk0NjIxMDdENzFG
MzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovLAogCQkJCTVDRTg1QjFGMUM4OEU2NDMw
MDcwQkZDRSAvKiBQaW5nTG9hZC5oICovLAogCQkJCTgzQTBFRDMzMUY3NDdDQzcwMDMyOTlFQiAv
KiBQcmVjb25uZWN0VGFzay5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuY3BwCShyZXZpc2lvbiAyNDAx
MDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQcm92aWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTb2NrZXRTdHJlYW1IYW5kbGU+IFdl
YlNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmws
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbikKK1JlZjxTb2NrZXRTdHJlYW1I
YW5kbGU+IFdlYlNvY2tldFByb3ZpZGVyOjpjcmVhdGVTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3Qg
VVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYgY2xpZW50LCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbFBhcnRpdGlvbiwgY29uc3QgU3Rv
cmFnZVNlc3Npb25Qcm92aWRlciopCiB7CiAgICAgcmV0dXJuIFdlYlNvY2tldFN0cmVhbTo6Y3Jl
YXRlKHVybCwgY2xpZW50LCBzZXNzaW9uSUQsIGNyZWRlbnRpYWxQYXJ0aXRpb24pOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRQ
cm92aWRlci5oCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViU29ja2V0UHJvdmlkZXIgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6U29ja2V0UHJvdmlkZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
V2ViU29ja2V0UHJvdmlkZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU29j
a2V0UHJvdmlkZXIpOyB9Ci0gICAgUmVmPFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZT4gY3Jl
YXRlU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxQYXJ0
aXRpb24pIGZpbmFsOworICAgIFJlZjxXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0
ZVNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsUGFydGl0
aW9uLCBjb25zdCBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKikgZmluYWw7CiAgICAg
dmlydHVhbCB+V2ViU29ja2V0UHJvdmlkZXIoKSB7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAkocmV2aXNpb24g
MjQwMTA0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMTggQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlN0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7
CisgICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9ucyBhcmUgYWNjZXNzZWQgb25seSBpbiB0aGUg
TmV0d29ya1Byb2Nlc3MuCisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9y
YWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KK307CisKK1dlYkNv
b2tpZUphcjo6V2ViQ29va2llSmFyKCkKKyAgICA6IFdlYkNvcmU6OkNvb2tpZUphcihhZG9wdFJl
ZigqbmV3IFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpKSB7IH0KKwogU3RyaW5nIFdlYkNvb2tp
ZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgJKHJldmlzaW9u
IDI0MDEwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUph
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwor
cHJpdmF0ZToKKyAgICBXZWJDb29raWVKYXIoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDEwNCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBTdG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24g
aW4gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkzNTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAx
OS0wMS0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ1NQ
IHZpb2xhdGlvbiByZXBvcnRzIHNob3VsZCBieXBhc3MgQ1NQIGNoZWNrcwpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGFnZVN0
b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgor
CitjbGFzcyBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBhZ2VT
dG9yYWdlU2Vzc2lvblByb3ZpZGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBh
Z2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKTsgfQorCisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9w
YWdlKQorICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZVNlc3Npb24obV9wYWdlLT5zZXNzaW9uSUQoKSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIHZvaWQgc2V0UGFnZShXZWJDb3JlOjpQYWdlJiBwYWdlKQorICAg
IHsKKyAgICAgICAgbV9wYWdlID0gbWFrZVdlYWtQdHIocGFnZSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIFdlYWtQdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOworfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJL
aXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ3
LDYgKzE0Nyw3IEBACiAJCTU5OEFEOTI4MTIwMUNGMzIwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyTW9jay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU5OEFEOTI3MTIwMUNGMzIwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyTW9jay5tbSAqLzsgfTsKIAkJNTk4QUQ5MkExMjAxQ0YzQjAwQUJBRTRFIC8q
IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEFEOTI5MTIwMUNGM0IwMEFCQUU0
RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmggKi87IH07CiAJ
CTU5OEFEQTQ2MTIwMjI3NTAwMEFCQUU0RSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OThBREE0
NTEyMDIyNzUwMDBBQkFFNEUgLyogV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDOUVGMkY1MjFG
MDYxQkUwMDNCREM1NiAvKiBQYWdlU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RUYyRjQyMUYwNjFCRTAwM0JE
QzU2IC8qIFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmggKi87IH07CiAJCTVDRTQ0RjRBMjA2
RDcwRUEwMDNFRkQwMSAvKiBQaW5nSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U0NEY0OTIwNkQ3MEU5MDAzRUZEMDEgLyogUGluZ0hhbmRs
ZS5oICovOyB9OwogCQk1RDdCRjgxNDBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDdCRjgxMjBD
MkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUQ3QkY4MTUwQzJBMUQ5MDAwOENFMDZEIC8qIFdl
Ykluc3BlY3Rvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi87IH07CkBA
IC05ODYsNiArOTg3LDcgQEAKIAkJNTk4QUQ5MjcxMjAxQ0YzMjAwQUJBRTRFIC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5OEFEOTI5MTIwMUNGM0IwMEFCQUU0RSAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyTW9ja0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk4QURBNDUxMjAyMjc1MDAwQUJBRTRFIC8q
IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1QzlFRjJGNDIxRjA2MUJFMDAzQkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNz
aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGFnZVN0b3Jh
Z2VTZXNzaW9uUHJvdmlkZXIuaDsgcGF0aCA9IFdlYkNvcmVTdXBwb3J0L1BhZ2VTdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNUNFNDRGNDky
MDZENzBFOTAwM0VGRDAxIC8qIFBpbmdIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUGluZ0hhbmRsZS5oOyBwYXRoID0gV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5o
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTVEN0JGODEyMEMyQTFEOTAwMDhDRTA2
RCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Ykluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdCRjgxMzBDMkEx
RDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI1NTQsNiArMjU1Niw3IEBACiAJCQkJQTEwQzFENDQxODIwMkZGQjAwMzY4ODNBIC8q
IGlvcyAqLywKIAkJCQlCODI5NThEMTEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVs
LmggKi8sCiAJCQkJQjgyOTU4RDIxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5t
bSAqLywKKwkJCQk1QzlFRjJGNDIxRjA2MUJFMDAzQkRDNTYgLyogUGFnZVN0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIuaCAqLywKIAkJCQk1Q0U0NEY0OTIwNkQ3MEU5MDAzRUZEMDEgLyogUGluZ0hhbmRs
ZS5oICovLAogCQkJCTdDMDFDQjgxMTczNDM1QzkwMEM1RDgwNyAvKiBQb3B1cE1lbnVNYWMuaCAq
LywKIAkJCQk3QzAxQ0I4MjE3MzQzNUM5MDBDNUQ4MDcgLyogUG9wdXBNZW51TWFjLm1tICovLApA
QCAtMjkzNCw2ICsyOTM3LDcgQEAKIAkJCQlFMTUzMUJEODIxODdCOTU0MDAyRTNGODEgLyogTlNV
UkxEb3dubG9hZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3OUIxRDU3QUJFRjAwQUI4
NUVBIC8qIE9iakNFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0Mzc5RDFE
NTdBQkVGMDBBQjg1RUEgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTVDOUVGMkY1MjFGMDYxQkUwMDNCREM1NiAvKiBQYWdlU3RvcmFnZVNlc3Npb25Qcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNFNDRGNEEyMDZENzBFQTAwM0VGRDAxIC8qIFBp
bmdIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMEMxRDVGMTgyMDMwMEUwMDM2ODgzQSAv
KiBQb3B1cE1lbnVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDFDQjg1MTczNDM1QzkwMEM1
RDgwNyAvKiBQb3B1cE1lbnVNYWMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjQwMTA0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTYg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBT
dG9wIHVzaW5nIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24gaW4gV2ViQ29y
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNj
L1dlYkNhY2hlLm1tOgorICAgICAgICAoK1tXZWJDYWNoZSBhZGRJbWFnZVRvQ2FjaGU6Zm9yVVJM
OmZvckZyYW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToK
KyAgICAgICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1l
OnByZWZlcmVuY2VzOmdyb3VwTmFtZTpdKToKKwogMjAxOS0wMS0xNSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZHVjZSB1c2Ugb2YgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24gaW4gV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCShyZXZpc2lvbiAyNDAx
MDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9TdG9yYWdlU2Vzc2lvblByb3ZpZGVy
Lmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4K
IApAQCAtNTAsNiArNTEsMTMgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5o
PgogI2VuZGlmCiAKK2NsYXNzIERlZmF1bHRTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGlj
IFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgeworICAgIFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICZXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOworICAgIH0KK307CisKIEBpbXBsZW1lbnRhdGlvbiBXZWJDYWNoZQogCiArICh2
b2lkKWluaXRpYWxpemUKQEAgLTE2NSw3ICsxNzMsOCBAQCArIChib29sKWFkZEltYWdlVG9DYWNo
ZTooQ0dJbWFnZVJlZilpbWFnCiAgICAgaWYgKCFpbWFnZSB8fCAhdXJsIHx8ICFbW3VybCBhYnNv
bHV0ZVN0cmluZ10gbGVuZ3RoXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5hZGRJbWFnZVRvQ2FjaGUoUmV0YWlu
UHRyPENHSW1hZ2VSZWY+KGltYWdlKSwgdXJsLCBmcmFtZSA/IGNvcmUoZnJhbWUpLT5kb2N1bWVu
dCgpLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIDogZW1wdHlTdHJpbmcoKSwgUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV2ViQ29yZTo6Q29va2llSmFyOjpjcmVhdGUoKS5w
dHIoKSk7CisgICAgYXV0byBwcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgRGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIpOworICAgIHJldHVybiBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xl
dG9uKCkuYWRkSW1hZ2VUb0NhY2hlKFJldGFpblB0cjxDR0ltYWdlUmVmPihpbWFnZSksIHVybCwg
ZnJhbWUgPyBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24o
KSA6IGVtcHR5U3RyaW5nKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdl
YkNvcmU6OkNvb2tpZUphcjo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKS5wdHIoKSk7CiB9CiAK
ICsgKHZvaWQpcmVtb3ZlSW1hZ2VGcm9tQ2FjaGVGb3JVUkw6KE5TVVJMICopdXJsCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNDAx
MDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1w
b3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIlBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCiAjaW1wb3J0ICJTdG9yYWdlVGhy
ZWFkLmgiCiAjaW1wb3J0ICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKICNpbXBvcnQgIldl
YkFwcGxpY2F0aW9uQ2FjaGVJbnRlcm5hbC5oIgpAQCAtMTQ0MCwxMyArMTQ0MSwxNCBAQCAtICh2
b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgX3ByaXZhdGUtPmdyb3Vw
ID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJl
bmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFk
ZFdlYlZpZXcoc2VsZik7CiAKKyAgICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUoKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29u
ZmlndXJhdGlvbigKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYp
LAogICAgICAgICBTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCksCiAgICAgICAgIExpYldlYlJUQ1By
b3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6
OmNyZWF0ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZShzZWxmKSwKLSAgICAg
ICAgQ29va2llSmFyOjpjcmVhdGUoKQorICAgICAgICBDb29raWVKYXI6OmNyZWF0ZShzdG9yYWdl
UHJvdmlkZXIuY29weVJlZigpKQogICAgICk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChz
ZWxmKTsKQEAgLTE0NzcsNiArMTQ3OSw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9u
V2l0aEZyYW1lTmEKICAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyQ29udGVudFByb3ZpZGVyID0g
Jl9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCk7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24udmlzaXRlZExpbmtTdG9yZSA9ICZfcHJpdmF0ZS0+Z3JvdXAtPnZpc2l0ZWRMaW5r
U3RvcmUoKTsKICAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24pKTsKKyAgICBzdG9yYWdlUHJvdmlkZXItPnNldFBhZ2UoKl9wcml2YXRlLT5wYWdl
KTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXRHcm91cE5hbWUoZ3JvdXBOYW1lKTsKIApAQCAt
MTcwNiwxMyArMTcwOSwxNCBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxl
OihOCiAgICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91
cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsK
ICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7CiAKKyAgICBhdXRvIHN0b3Jh
Z2VQcm92aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVyOjpjcmVhdGUoKTsKICAgICBQ
YWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbigKICAgICAgICAgbWFrZVVuaXF1ZVJl
ZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpLAogICAgICAgICBTb2NrZXRQcm92aWRlcjo6Y3JlYXRl
KCksCiAgICAgICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgV2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAogICAgICAgICBCYWNrRm9yd2FyZExp
c3Q6OmNyZWF0ZShzZWxmKSwKLSAgICAgICAgQ29va2llSmFyOjpjcmVhdGUoKQorICAgICAgICBD
b29raWVKYXI6OmNyZWF0ZShzdG9yYWdlUHJvdmlkZXIuY29weVJlZigpKQogICAgICk7CiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudElPUyhz
ZWxmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTczNCw2ICsxNzM4LDcgQEAgLSAo
aWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnBsdWdpbkluZm9Qcm92aWRlciA9ICZXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRv
bigpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShXVEZNb3ZlKHBhZ2VDb25maWd1
cmF0aW9uKSk7CisgICAgc3RvcmFnZVByb3ZpZGVyLT5zZXRQYWdlKCpfcHJpdmF0ZS0+cGFnZSk7
CiAgICAgCiAgICAgW3NlbGYgc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkOllFU107CiAgICAg
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDAxMDQpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOS0wMS0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFN0b3AgdXNpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbiBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTM1MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhG
cmFtZSk6CisKIDIwMTktMDEtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNDAxMDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5oIgorI2luY2x1ZGUgIlBhZ2VTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRl
ICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRpb25DYWNoZS5oIgpAQCAtMzEw
NiwxMyArMzEwNywxNCBAQCBIUkVTVUxUIFdlYlZpZXc6OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFt
CiAKICAgICBtX2luc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7
CiAKKyAgICBhdXRvIHN0b3JhZ2VQcm92aWRlciA9IFBhZ2VTdG9yYWdlU2Vzc2lvblByb3ZpZGVy
OjpjcmVhdGUoKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKAogICAgICAg
ICBtYWtlVW5pcXVlUmVmPFdlYkVkaXRvckNsaWVudD4odGhpcyksCiAgICAgICAgIFNvY2tldFBy
b3ZpZGVyOjpjcmVhdGUoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRl
cj4oKSwKICAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpLAog
ICAgICAgICBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgpLAotICAgICAgICBDb29raWVKYXI6OmNy
ZWF0ZSgpCisgICAgICAgIENvb2tpZUphcjo6Y3JlYXRlKHN0b3JhZ2VQcm92aWRlci5jb3B5UmVm
KCkpCiAgICAgKTsKICAgICBjb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJv
bWVDbGllbnQodGhpcyk7CiAgICAgY29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5l
dyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsKQEAgLTMxMjgsNiArMzEzMCw3IEBAIEhSRVNV
TFQgV2ViVmlldzo6aW5pdFdpdGhGcmFtZShSRUNUIGZyYW0KICAgICBjb25maWd1cmF0aW9uLnBs
dWdpbkluZm9Qcm92aWRlciA9ICZXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnNpbmdsZXRvbigpOwog
CiAgICAgbV9wYWdlID0gbmV3IFBhZ2UoV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgc3Rv
cmFnZVByb3ZpZGVyLT5zZXRQYWdlKCptX3BhZ2UpOwogICAgIHByb3ZpZGVHZW9sb2NhdGlvblRv
KG1fcGFnZSwgKm5ldyBXZWJHZW9sb2NhdGlvbkNsaWVudCh0aGlzKSk7CiAKICAgICBtX3BhZ2Ut
PmFkZExheW91dE1pbGVzdG9uZXMoeyBEaWRGaXJzdExheW91dCwgRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0IH0pOwo=
</data>
<flag name="review"
          id="376153"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>