<?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>213048</bug_id>
          
          <creation_ts>2020-06-10 14:09:28 -0700</creation_ts>
          <short_desc>Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to replace _WKProcessPoolConfiguration.hstsStorageDirectory</short_desc>
          <delta_ts>2021-07-14 09:32:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>213781</dependson>
    
    <dependson>213933</dependson>
          <blocked>203547</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>david_quesada</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1661351</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-10 14:09:28 -0700</bug_when>
    <thetext>Make _WKWebsiteDataStoreConfiguration SPI for HSTS storage to replace _WKProcessPoolConfiguration.hstsStorageDirectory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661353</commentid>
    <comment_count>1</comment_count>
      <attachid>401582</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-10 14:16:53 -0700</bug_when>
    <thetext>Created attachment 401582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661375</commentid>
    <comment_count>2</comment_count>
      <attachid>401582</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-10 14:56:45 -0700</bug_when>
    <thetext>Comment on attachment 401582
Patch

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

&gt; Source/WTF/wtf/PlatformHave.h:413
&gt; +    || (PLATFORM(IOS) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 140000) \

Should be:

    || ((PLATFORM(IOS) || PLATFORM(MACCATALYST) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 140000) \

As I recently learned from Tim Horton.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662687</commentid>
    <comment_count>3</comment_count>
      <attachid>401905</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-15 10:10:45 -0700</bug_when>
    <thetext>Created attachment 401905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662691</commentid>
    <comment_count>4</comment_count>
      <attachid>401907</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-15 10:13:26 -0700</bug_when>
    <thetext>Created attachment 401907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662774</commentid>
    <comment_count>5</comment_count>
      <attachid>401926</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-15 13:04:23 -0700</bug_when>
    <thetext>Created attachment 401926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664300</commentid>
    <comment_count>6</comment_count>
      <attachid>401926</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-19 01:42:34 -0700</bug_when>
    <thetext>Comment on attachment 401926
Patch

LGTM overall.
Can we add some API tests covering HSTS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664420</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-19 10:53:55 -0700</bug_when>
    <thetext>Unfortunately, manual verification is the best we have right now.  I&apos;ve tried hard in the past, but HSTS apparently only persists data in sandboxed apps, and it does not persist in a timely manner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667464</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-29 21:39:55 -0700</bug_when>
    <thetext>Committed r263724: &lt;https://trac.webkit.org/changeset/263724&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401926.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667465</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-29 21:40:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/64922940&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667513</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-30 02:24:21 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 213781</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667603</commentid>
    <comment_count>11</comment_count>
      <attachid>401926</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2020-06-30 10:07:44 -0700</bug_when>
    <thetext>Comment on attachment 401926
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:301
&gt; +        [NSException raise:NSInvalidArgumentException format:@&quot;Cannot set mediaKeysStorageDirectory on a non-persistent _WKWebsiteDataStoreConfiguration.&quot;];

This should say `Cannot set hstsStorageDirectory...`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668470</commentid>
    <comment_count>12</comment_count>
      <attachid>403435</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-02 20:34:10 -0700</bug_when>
    <thetext>Created attachment 403435
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668471</commentid>
    <comment_count>13</comment_count>
      <attachid>403436</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-02 20:34:55 -0700</bug_when>
    <thetext>Created attachment 403436
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668479</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-02 21:17:59 -0700</bug_when>
    <thetext>Committed r263882: &lt;https://trac.webkit.org/changeset/263882&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403436.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668621</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-03 12:57:58 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 213933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668623</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-07-03 12:58:13 -0700</bug_when>
    <thetext>This broke the build, reverting. Details in Slack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682434</commentid>
    <comment_count>17</comment_count>
      <attachid>407124</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-24 12:52:52 -0700</bug_when>
    <thetext>Created attachment 407124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682439</commentid>
    <comment_count>18</comment_count>
      <attachid>407126</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-24 13:24:04 -0700</bug_when>
    <thetext>Created attachment 407126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682443</commentid>
    <comment_count>19</comment_count>
      <attachid>407128</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-24 13:35:16 -0700</bug_when>
    <thetext>Created attachment 407128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682463</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-24 14:41:49 -0700</bug_when>
    <thetext>Committed r266086: &lt;https://trac.webkit.org/changeset/266086&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407128.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776947</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-14 09:32:52 -0700</bug_when>
    <thetext>I requested test SPI in rdar://80550123</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401582</attachid>
            <date>2020-06-10 14:16:53 -0700</date>
            <delta_ts>2020-06-15 10:10:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213048-20200610141652.patch</filename>
            <type>text/plain</type>
            <size>37903</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjI4NDUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTEwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisK
IDIwMjAtMDYtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIG9zX2xvZyBpbnN0ZWFkIG9mIGFzbF9sb2cKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtSGF2ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2
ZS5oCShyZXZpc2lvbiAyNjI4NDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDA5LDYgKzQwOSwxMyBAQAogI2RlZmluZSBIQVZFX0NGTkVUV09S
S19NRVRSSUNTX0NPTk5FQ1RJT05fUFJPUEVSVElFUyAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNjAwKSBcCisg
ICAgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTQwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gNzAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikg
JiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVf
SFNUU19TVE9SQUdFIDEKKyNlbmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCiAjZGVmaW5l
IEhBVkVfQ0ZORVRXT1JLX01FVFJJQ1NfQVBJU19WNCAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwkocmV2aXNpb24gMjYyODU4KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTEwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNl
IF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvc3BpL2NmL0NG
TmV0d29ya1NQSS5oOgorCiAyMDIwLTA2LTA5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgdGhlIHdyb25nIExhdW5jaFNlcnZpY2Vz
IFNQSSBmb3IgZ2V0dGluZyBhbiBhcHAncyBsb2NhbGl6ZWQgbmFtZQpJbmRleDogU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHJldmlzaW9uIDI2Mjg0NSkK
KysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MDcsNyArNDA3LDcgQEAgV1RGX0VYVEVSTl9DX0JFR0lOCiBDRkRhdGFSZWYg
X0NGTmV0d29ya0NvcHlBVFNDb250ZXh0KHZvaWQpOwogQm9vbGVhbiBfQ0ZOZXR3b3JrU2V0QVRT
Q29udGV4dChDRkRhdGFSZWYpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmICFIQVZFKEhTVFNfU1RPUkFHRSkKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBf
a0NGTmV0d29ya0hTVFNQcmVsb2FkZWQ7CiBDRkRpY3Rpb25hcnlSZWYgX0NGTmV0d29ya0NvcHlI
U1RTUG9saWNpZXMoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CiB2b2lkIF9DRk5ldHdvcmtSZXNl
dEhTVFMoQ0ZVUkxSZWYsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwpAQCAtNDU2LDkgKzQ1Niwy
MiBAQCBXVEZfRVhURVJOX0NfRU5ECiAtICh2b2lkKV9zZXRNSU1FVHlwZTooTlNTdHJpbmcgKil0
eXBlOwogQGVuZAogCisjaWYgSEFWRShIU1RTX1NUT1JBR0UpCitAaW50ZXJmYWNlIF9OU0hTVFNT
dG9yYWdlIDogTlNPYmplY3QKKy0oaW5zdGFuY2V0eXBlKWluaXRQZXJzaXN0ZW50U3RvcmVXaXRo
VVJMOihudWxsYWJsZSBOU1VSTCopcGF0aDsKKy0oQk9PTClzaG91bGRQcm9tb3RlSG9zdFRvSFRU
UFM6KE5TU3RyaW5nICopaG9zdDsKKy0oTlNBcnJheTxOU1N0cmluZyAqPiAqKW5vblByZWxvYWRl
ZEhvc3RzOworLSh2b2lkKXJlc2V0SFNUU0Zvckhvc3Q6KE5TU3RyaW5nICopaG9zdDsKKy0odm9p
ZClyZXNldEhTVFNIb3N0c1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZTsKK0BlbmQKKyNlbmRpZgor
CiBAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKCkKIC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBvbmNlIHJkYXI6Ly9wcm9ibGVtLzQwNjUwMjQ0IGlzIGluIGEgYnVpbGQuCiBAcHJv
cGVydHkgKGNvcHkpIE5TRGljdGlvbmFyeSAqX3NvY2tldFN0cmVhbVByb3BlcnRpZXM7CisjaWYg
SEFWRShIU1RTX1NUT1JBR0UpCitAcHJvcGVydHkgKG51bGxhYmxlLCByZXRhaW4pIF9OU0hTVFNT
dG9yYWdlICpfaHN0c1N0b3JhZ2U7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBOU1VSTFNl
c3Npb25UYXNrICgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYyODQ1KQorKysgU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2NSBAQAorMjAyMC0wNi0x
MCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IE1ha2UgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gU1BJIGZvciBIU1RTIHN0b3Jh
Z2UgdG8gcmVwbGFjZSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaHN0c1N0b3JhZ2VEaXJl
Y3RvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MzA0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgdXNlcyBDRk5ldHdvcmsgU1BJIGludHJvZHVjZWQgaW4gcmRhcjovL3Byb2JsZW0vNTAxMDk2
MzEgdG8gYWxsb3cgSFNUUyBzdG9yYWdlIHBlciBOU1VSTFNlc3Npb24uCisgICAgICAgIFRvIGJl
IGNvbXBsZXRlLCBJIGFsc28gZGVwcmVjYXRlZCBvdXIgVUkgcHJvY2VzcyBIU1RTIHN0YXRlIHJl
bW92YWwgYXR0ZW1wdCBTUElzLCBXS0NvbnRleHRSZXNldEhTVFNIb3N0cyBhbmQKKyAgICAgICAg
V0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZSwgd2hpY2ggaGFkIHRoZWlyIGxh
c3QgdXNlIHJlbW92ZWQgaW4gcmRhcjovL3Byb2JsZW0vNjQyMjA4MzguCisKKyAgICAgICAgSSBt
YW51YWxseSB2ZXJpZmllZCB0aGF0IHRoaXMgbmV3IFNQSSBwdXRzIEhTVFMgZGF0YSBpbiB0aGUg
c3BlY2lmaWVkIGxvY2F0aW9uLCBhbmQgSSBhbHNvIHZlcmlmaWVkIHRoYXQgSFNUUworICAgICAg
ICBzdGF0ZSBxdWVyeWluZyBhbmQgcmVtb3ZhbCB3b3JrcyB3aXRoIHRoZSBuZXcgQ0ZOZXR3b3Jr
IFNQSSBhcyBpdCBkaWQgd2l0aCB0aGUgb2xkIG9uZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNp
dGVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhv
c3ROYW1lc1dpdGhIU1RTQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpoc3RzU3RvcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0
ZU1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1h
Yy5tbToKKyAgICAgICAgKFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKToKKyAgICAgICAgKFdLQ29u
dGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
bW06CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGhzdHNTdG9y
YWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIHNldEhTVFNTdG9yYWdlRGlyZWN0b3J5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojpwcml2YXRlQnJvd3Np
bmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJl
c2V0SFNUU0hvc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpy
ZXNvbHZlZEhTVFNTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Lmg6CisKIDIwMjAtMDYtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZlcnQgcjI1OTc3MApJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2Mjg0NSkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTMxLDEwICsxNTMxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hX
ZWJzaXRlRGF0YShQQQogICAgIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkK
LSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFND
YWNoZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgICAgICBnZXRIb3N0TmFtZXNXaXRoSFNUU0Nh
Y2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRl
RGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKLSAgICB9CisgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQorICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhv
c3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCkBAIC0xNTgwLDEwICsxNTc4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB3ZWJzaXRlRGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQotICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewot
ICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKLSAgICAgICAgICAgIGNsZWFySFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNl
c3Npb24sIG1vZGlmaWVkU2luY2UpOwotICAgIH0KKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAgIGNsZWFySFNUU0Nh
Y2hlKHNlc3Npb25JRCwgbW9kaWZpZWRTaW5jZSk7CiAjZW5kaWYKIAogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcykpIHsKQEAgLTE2ODUs
MTAgKzE2ODEsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvCiAg
ICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQotICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKLSAgICAgICAgICAgIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcygqbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLCBIU1RTQ2FjaGVIb3N0TmFtZXMpOwotICAgIH0KKyAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAg
IGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhzZXNzaW9uSUQsIEhTVFNDYWNoZUhvc3ROYW1l
cyk7CiAjZW5kaWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCkBA
IC0xODU2LDE1ICsxODUwLDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3Ry
aWN0V2UKICAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlOwogI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAg
ICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7Ci0gICAgICAgICAgICBob3N0bmFtZXNXaXRoSFNU
U1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFs
bE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKKyAgICAg
ICAgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IHRoaXMtPmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUo
c2Vzc2lvbklEKTsKKyAgICAgICAgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSA9IGZpbHRlckZv
clJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0
YUZvciwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CiAKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpCi0gICAgICAgICAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9z
dCA6IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpCisgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21Ib3N0KGhvc3QpKTsKIAotICAgICAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVz
KCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpOwotICAg
ICAgICB9CisgICAgICAgIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhzZXNzaW9uSUQsIGhv
c3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpOwogICAgIH0KICNlbmRpZgogCkBAIC0yMDQxLDE4ICsy
MDMzLDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1cKICAgICAg
ICAgfSk7CiAgICAgfSkpOwogICAgIAotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBjYWxs
YmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGE7CisgICAgYXV0byYgd2Vic2l0ZURhdGEgPSBj
YWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGE7CiAgICAgCiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSkgewogICAgICAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKLSAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMod2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAgICAg
ICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHdlYnNpdGVE
YXRhLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKICAgICB9CiAgICAgCiAjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShTT1VQKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIGdldEhv
c3ROYW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgd2Vic2l0ZURhdGFT
dG9yZS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKLSAgICB9CisgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQorICAgICAgICB3ZWJz
aXRlRGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShz
ZXNzaW9uSUQpOwogI2VuZGlmCiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzKSkgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjYyODQ1KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODksOSArMTg5LDkgQEAgcHVibGljOgogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNv
dXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShD
T0NPQSkgfHwgVVNFKFNPVVApCi0gICAgdm9pZCBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYpOwotICAgIHZv
aWQgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgdm9pZCBjbGVhckhTVFNDYWNoZShX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsK
KyAgICBIYXNoU2V0PFN0cmluZz4gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShQQUw6OlNlc3Npb25J
RCkgY29uc3Q7CisgICAgdm9pZCBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBjbGVhckhTVFNDYWNoZShQ
QUw6OlNlc3Npb25JRCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7CiAjZW5kaWYKIAogICAgIHZv
aWQgZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI2Mjg0NSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1NywxMCBAQCB2b2lkIE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplCiAgICAgZW5jb2RlciA8PCBhbHRlcm5hdGl2
ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8PCBodHRwM0Vu
YWJsZWQ7CiAjZW5kaWYKKyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKKyAgICBlbmNvZGVyIDw8IGhz
dHNTdG9yYWdlRGlyZWN0b3J5OworICAgIGVuY29kZXIgPDwgaHN0c1N0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CisjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICBlbmNvZGVyIDw8IGNv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlVHlwZTsKQEAgLTE1Myw2ICsxNTcsMTggQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcgogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlm
CiAKKyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKKyAgICBPcHRpb25hbDxTdHJpbmc+IGhzdHNTdG9y
YWdlRGlyZWN0b3J5OworICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAg
aWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaHN0c1N0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZGVjb2RlciA+PiBoc3RzU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisgICAgCiAjaWYg
VVNFKFNPVVApCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBh
dGg7CiAgICAgZGVjb2RlciA+PiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CkBAIC0yNzUs
NiArMjkxLDEwIEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXIKICAg
ICAgICAgLCBXVEZNb3ZlKCphbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpCiAgICAgICAgICwgV1RGTW92ZSgqaHR0cDNFbmFibGVkKQogI2VuZGlmCisjaWYgSEFWRShI
U1RTX1NUT1JBR0UpCisgICAgICAgICwgV1RGTW92ZSgqaHN0c1N0b3JhZ2VEaXJlY3RvcnkpCisg
ICAgICAgICwgV1RGTW92ZSgqaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCisj
ZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICAgICAgLCBXVEZNb3ZlKCpjb29raWVQZXJzaXN0ZW50
U3RvcmFnZVBhdGgpCiAgICAgICAgICwgV1RGTW92ZSgqY29va2llUGVyc2lzdGVudFN0b3JhZ2VU
eXBlKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjYyODQ1
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwxMCBAQCBzdHJ1Y3QgTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBib29s
IGh0dHAzRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKKyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkK
KyAgICBTdHJpbmcgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworI2VuZGlmCiAjaWYg
VVNFKFNPVVApCiAgICAgU3RyaW5nIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBT
b3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlw
ZSB7IFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU6OlRleHQgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2Mjg0NSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM0
LDYgKzEzNCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9jZXNzOjpzb3UKICNl
bmRpZgogfQogCisjaWYgIUhBVkUoSFNUU19TVE9SQUdFKQogc3RhdGljIHZvaWQgZmlsdGVyUHJl
bG9hZEhTVFNFbnRyeShjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIHZhbHVlLCB2b2lkKiBj
b250ZXh0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQpOwpAQCAtMTUyLDI3ICsxNTMs
NTMgQEAgc3RhdGljIHZvaWQgZmlsdGVyUHJlbG9hZEhTVFNFbnRyeShjb25zdAogICAgIGlmIChD
RkRpY3Rpb25hcnlHZXRWYWx1ZSh2YWwsIF9rQ0ZOZXR3b3JrSFNUU1ByZWxvYWRlZCkgIT0ga0NG
Qm9vbGVhblRydWUpCiAgICAgICAgIGhvc3RuYW1lcy0+YWRkKChDRlN0cmluZ1JlZilrZXkpOwog
fQorI2VuZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmlu
Zz4mIGhvc3ROYW1lcykKK0hhc2hTZXQ8U3RyaW5nPiBOZXR3b3JrUHJvY2Vzczo6aG9zdE5hbWVz
V2l0aEhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0CiB7Ci0gICAgaWYg
KGF1dG8gSFNUU1BvbGljaWVzID0gYWRvcHRDRihfQ0ZOZXR3b3JrQ29weUhTVFNQb2xpY2llcyhz
ZXNzaW9uLnBsYXRmb3JtU2Vzc2lvbigpKSkpCi0gICAgICAgIENGRGljdGlvbmFyeUFwcGx5RnVu
Y3Rpb24oSFNUU1BvbGljaWVzLmdldCgpLCBmaWx0ZXJQcmVsb2FkSFNUU0VudHJ5LCAmaG9zdE5h
bWVzKTsKKyAgICBIYXNoU2V0PFN0cmluZz4gaG9zdE5hbWVzOworI2lmIEhBVkUoSFNUU19TVE9S
QUdFKQorICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtT
ZXNzaW9uQ29jb2EqPih0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkgeworICAgICAg
ICBmb3IgKE5TU3RyaW5nICpob3N0IGluIG5ldHdvcmtTZXNzaW9uLT5oc3RzU3RvcmFnZSgpLm5v
blByZWxvYWRlZEhvc3RzKQorICAgICAgICAgICAgaG9zdE5hbWVzLmFkZChob3N0KTsKKyAgICB9
CisjZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICBpZiAoYXV0byBIU1RTUG9saWNpZXMgPSBhZG9wdENGKF9DRk5ldHdvcmtD
b3B5SFNUU1BvbGljaWVzKHNlc3Npb24ucGxhdGZvcm1TZXNzaW9uKCkpKSkKKyAgICAgICAgICAg
IENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24oSFNUU1BvbGljaWVzLmdldCgpLCBmaWx0ZXJQcmVs
b2FkSFNUU0VudHJ5LCAmaG9zdE5hbWVzKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gaG9z
dE5hbWVzOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0
TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaG9zdE5hbWVzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0Nh
Y2hlRm9ySG9zdE5hbWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGhvc3ROYW1lcykKIHsKLSAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogaG9zdE5hbWVz
KSB7Ci0gICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgbWFrZVN0cmluZygiaHR0cHM6Ly8iLCBo
b3N0TmFtZSkpOwotICAgICAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTKHVybC5jcmVhdGVDRlVSTCgp
LmdldCgpLCBzZXNzaW9uLnBsYXRmb3JtU2Vzc2lvbigpKTsKKyNpZiBIQVZFKEhTVFNfU1RPUkFH
RSkKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vz
c2lvbkNvY29hKj4odGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykKKyAgICAgICAgICAgIFtuZXR3b3JrU2Vz
c2lvbi0+aHN0c1N0b3JhZ2UoKSByZXNldEhTVFNGb3JIb3N0Omhvc3ROYW1lXTsKICAgICB9Cisj
ZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkg
eworICAgICAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogaG9zdE5hbWVzKSB7CisgICAgICAgICAg
ICBhdXRvIHVybCA9IFVSTCh7IH0sIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgaG9zdE5hbWUpKTsK
KyAgICAgICAgICAgIF9DRk5ldHdvcmtSZXNldEhTVFModXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCks
IHNlc3Npb24ucGxhdGZvcm1TZXNzaW9uKCkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSkKIHsKICAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2YWwg
PSBtb2RpZmllZFNpbmNlLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpOwogICAgIE5TRGF0
ZSAqZGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6dGltZUludGVy
dmFsXTsKLQotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1NpbmNlRGF0ZShzZXNzaW9uLnBs
YXRmb3JtU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVmKWRhdGUpOworI2lmIEhBVkUoSFNU
U19TVE9SQUdFKQorICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5l
dHdvcmtTZXNzaW9uQ29jb2EqPih0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkKKyAg
ICAgICAgW25ldHdvcmtTZXNzaW9uLT5oc3RzU3RvcmFnZSgpIHJlc2V0SFNUU0hvc3RzU2luY2VE
YXRlOmRhdGVdOworI2Vsc2UKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCisgICAgICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1NpbmNlRGF0ZShz
ZXNzaW9uLnBsYXRmb3JtU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVmKWRhdGUpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCShyZXZpc2lvbiAyNjI4NDUpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFz
azsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKIE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vz
c2lvbkRlbGVnYXRlOwogT0JKQ19DTEFTUyBXS05ldHdvcmtTZXNzaW9uV2ViU29ja2V0RGVsZWdh
dGU7CitPQkpDX0NMQVNTIF9OU0hTVFNTdG9yYWdlOwogCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5o
IgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCkBAIC0xMDUsNiArMTA2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgdGFza1JlY2VpdmVkQnl0ZXMoTmV0d29ya0RhdGFUYXNrQ29jb2E6
OlRhc2tJZGVudGlmaWVyKTsKICAgICB2b2lkIHRhc2tGYWlsZWQoTmV0d29ya0RhdGFUYXNrQ29j
b2E6OlRhc2tJZGVudGlmaWVyKTsKICAgICBOU1VSTENyZWRlbnRpYWwgKnN1Y2Nlc3NmdWxDbGll
bnRDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCB1aW50MTZfdCBwb3J0KSBj
b25zdDsKKyAgICBfTlNIU1RTU3RvcmFnZSAqaHN0c1N0b3JhZ2UoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0JKHJldmlzaW9uIDI2Mjg0NSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjgs
NiArNjgsMTAgQEAKIAogI2ltcG9ydCAiRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLmgiCiAKKy8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBzb2Z0IGxpbmsgb25jZSByZGFyOi8vcHJvYmxlbS81MDEwOTYz
MSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgorU09GVF9MSU5LX0ZSQU1FV09S
SyhDRk5ldHdvcmspCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQ0ZOZXR3b3JrLCBfTlNIU1RT
U3RvcmFnZSkKKwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogQ0ZTdHJpbmdSZWYgY29uc3Qg
V2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KEAi
V2ViS2l0MkhUVFBQcm94eSIpOwpAQCAtMTA4OCw2ICsxMDkyLDE3IEBAIE5TVVJMQ3JlZGVudGlh
bCAqTmV0d29ya1Nlc3Npb25Db2NvYTo6c3UKICAgICByZXR1cm4gbV9zdWNjZXNzZnVsQ2xpZW50
Q2VydGlmaWNhdGVzLmdldChrZXkpLmdldCgpOwogfQogCitfTlNIU1RTU3RvcmFnZSAqTmV0d29y
a1Nlc3Npb25Db2NvYTo6aHN0c1N0b3JhZ2UoKSBjb25zdAoreworI2lmIEhBVkUoSFNUU19TVE9S
QUdFKQorICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBtX3Nl
c3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uOwor
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyByZXNwb25kc1RvU2VsZWN0b3IgY2hlY2sgb25jZSBy
ZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVk
LgorICAgIGlmIChbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9o
c3RzU3RvcmFnZSldKQorICAgICAgICByZXR1cm4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9y
YWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbi5faHN0c1N0b3JhZ2U7CisjZW5kaWYKKyAg
ICByZXR1cm4gbmlsOworfQorCiBjb25zdCBTdHJpbmcmIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmJv
dW5kSW50ZXJmYWNlSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYm91bmRJbnRl
cmZhY2VJZGVudGlmaWVyOwpAQCAtMTE2OSw2ICsxMTg0LDE1IEBAIE5ldHdvcmtTZXNzaW9uQ29j
b2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKIAogICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24g
KmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uRm9yU2Vzc2lvbklEKG1fc2Vzc2lvbklEKTsK
IAorI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorICAgIGlmICghIXBhcmFtZXRlcnMuaHN0c1N0b3Jh
Z2VEaXJlY3RvcnkgJiYgIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
cmVzcG9uZHNUb1NlbGVjdG9yIGNoZWNrIG9uY2UgcmRhcjovL3Byb2JsZW0vNTAxMDk2MzEgaXMg
aW4gYSBidWlsZCBhbmQgYm90cyBhcmUgdXBkYXRlZC4KKyAgICAgICAgaWYgKFtjb25maWd1cmF0
aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2hzdHNTdG9yYWdlKV0pCisgICAgICAg
ICAgICBjb25maWd1cmF0aW9uLl9oc3RzU3RvcmFnZSA9IFtbYWxsb2NfTlNIU1RTU3RvcmFnZUlu
c3RhbmNlKCkgaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU11dIGF1dG9y
ZWxlYXNlXTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEhBVkUoQVBQX1NTTykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAgICAgY29uZmlndXJhdGlvbi5fcHJldmVudHNBcHBTU08gPSB0cnVlOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1By
b2Nlc3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkocmV2aXNpb24gMjYyODQ1KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk0LDIxICs5NCwyMyBAQCBzdGF0aWMgQ1N0cmluZyBidWlsZEFjY2VwdExh
bmd1YWdlcyhjb25zCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBo
b3N0TmFtZXMpCitIYXNoU2V0PFN0cmluZz4gTmV0d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhI
U1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdAogewotICAgIGNvbnN0IGF1
dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vz
c2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOworICAgIEhhc2hTZXQ8U3RyaW5nPiBo
b3N0TmFtZXM7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtT
ZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpOwogICAgIHNlc3Npb24tPnNv
dXBOZXR3b3JrU2Vzc2lvbigpLmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoaG9zdE5hbWVzKTsK
KyAgICByZXR1cm4gaG9zdE5hbWVzOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVI
U1RTQ2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMpCiB7Ci0gICAgY29uc3QgYXV0
byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNz
aW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CisgICAgY29uc3QgYXV0byogc2Vzc2lv
biA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpOwogICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmRlbGV0ZUhTVFNDYWNo
ZUZvckhvc3ROYW1lcyhob3N0TmFtZXMpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVh
ckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RT
Q2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQog
ewotICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNv
dXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOworICAgIGNv
bnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICBzZXNzaW9uLT5zb3VwTmV0d29ya1Nlc3Npb24o
KS5jbGVhckhTVFNDYWNoZShtb2RpZmllZFNpbmNlKTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjI4NDUpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjIs
OCArNDIyLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6Ok1lc3NhZ2VOYW1lKTsKIAogICAgIGJvb2wgaXNVUkxLbm93bkhTVFNIb3N0KGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKLSAgICB2b2lkIHJlc2V0SFNUU0hvc3RzKCk7
Ci0gICAgdm9pZCByZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKGRvdWJsZSBzdGFydERhdGVJ
bnRlcnZhbFNpbmNlMTk3MCk7CiAKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlckdsb2JhbFVSTFNj
aGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcmKTsKICAgICBz
dGF0aWMgdm9pZCB1bnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2Nv
bEhhbmRsZXJzKGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCShyZXZpc2lvbiAy
NjI4NDUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJp
dmF0ZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdLQ29u
dGV4dFByaXZhdGVNYWNfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQbHVnaW5Mb2FkUG9s
aWN5Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtNDMsMTAgKzQ0LDggQEAgV0tfRVhQT1JU
IFdLRGljdGlvbmFyeVJlZiBXS0NvbnRleHRDb3B5UAogdHlwZWRlZiB2b2lkICheV0tDb250ZXh0
R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnNCbG9jaykoV0tBcnJheVJlZiwgV0tFcnJvclJlZik7
CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucyhXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnNCbG9j
ayBibG9jayk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29u
dGV4dFJlZiBjb250ZXh0KTsKLQotLy8gVGhlIHRpbWUgaGVyZSBpcyByZWxhdGl2ZSB0byB0aGUg
VW5peCBlcG9jaC4KLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRB
ZnRlckRhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNp
bmNlMTk3MCk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0cyhXS0NvbnRl
eHRSZWYgY29udGV4dCkgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIGRv
dWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAog
V0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKTsKIFdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dFVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYg
Y29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCShyZXZp
c2lvbiAyNjI4NDUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDE0ICsxMDEsMTIgQEAgdm9p
ZCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucwogI2VuZGlmCiB9CiAKLXZvaWQg
V0tDb250ZXh0UmVzZXRIU1RTSG9zdHMoV0tDb250ZXh0UmVmIGNvbnRleHQpCit2b2lkIFdLQ29u
dGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0
b0ltcGwoY29udGV4dCktPnJlc2V0SFNUU0hvc3RzKCk7CiB9CiAKLXZvaWQgV0tDb250ZXh0UmVz
ZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShXS0NvbnRleHRSZWYgY29udGV4dCwgZG91YmxlIHN0
YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKQordm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0c0Fk
ZGVkQWZ0ZXJEYXRlKFdLQ29udGV4dFJlZiwgZG91YmxlKQogewotICAgIHJldHVybiBXZWJLaXQ6
OnRvSW1wbChjb250ZXh0KS0+cmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShzdGFydERhdGVJ
bnRlcnZhbFNpbmNlMTk3MCk7CiB9CiAKIHZvaWQgV0tDb250ZXh0UmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYyODQ1KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcygxMC4xMCksIGlvcyg4LjAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXNX
ZWJQcm9jZXNzQ2FjaGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHBhZ2VDYWNoZUVuYWJsZWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Z2V0dGVyPWlzSklURW5hYmxlZCkgQk9PTCBKSVRFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQuNCksIGlvcygxMi4yKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUs
IGNvcHksIHNldHRlcj1zZXRIU1RTU3RvcmFnZURpcmVjdG9yeTopIE5TVVJMICpoc3RzU3RvcmFn
ZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwgc2V0dGVyPXNldEhTVFNTdG9yYWdl
RGlyZWN0b3J5OikgTlNVUkwgKmhzdHNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9ERVBSRUNBVEVE
X1dJVEhfUkVQTEFDRU1FTlQoIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmhzdHNT
dG9yYWdlRGlyZWN0b3J5IiwgbWFjb3MoMTAuMTUsIFdLX01BQ19UQkEpLCBpb3MoMTMuMCwgV0tf
SU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjb25maWd1cmVKU0NGb3JU
ZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZp
c2lvbiAyNjI4NDUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIs
NyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuCiBAcHJvcGVydHkg
KG5vbmF0b21pYykgTlNVSW50ZWdlciB0ZXN0U3BlZWRNdWx0aXBsaWVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2Ug
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbG93c1NlcnZlclByZWNvbm5lY3QgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwgc2V0dGVyPXNldEhTVFNTdG9yYWdlRGlyZWN0b3J5
OikgTlNVUkwgKmhzdHNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxs
YWJsZSwgY29weSkgTlNVUkwgKmFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI2
Mjg0NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxOSBA
QCAtICh2b2lkKXNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk6KE5TCiAgICAgX2NvbmZpZ3Vy
YXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCistIChO
U1VSTCAqKWhzdHNTdG9yYWdlRGlyZWN0b3J5Cit7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPmhzdHNTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rv
cnk6WUVTXTsKK30KKworLSAodm9pZClzZXRIU1RTU3RvcmFnZURpcmVjdG9yeTooTlNVUkwgKil1
cmwKK3sKKyAgICBpZiAoIV9jb25maWd1cmF0aW9uLT5pc1BlcnNpc3RlbnQoKSkKKyAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkNh
bm5vdCBzZXQgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBvbiBhIG5vbi1wZXJzaXN0ZW50IF9X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLiJdOworICAgIGNoZWNrVVJMQXJndW1lbnQo
dXJsKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkodXJsLnBh
dGgpOworfQorCiAtIChOU1VSTCAqKWFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5
CiB7CiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPmFs
dGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tCShyZXZpc2lvbiAyNjI4NDUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MzgsMTggKzczOCw2IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJOb3RpZmljYXQKICAgICBbW05TTm90aWZp
Y2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fYWN0aXZhdGlvbk9i
c2VydmVyLmdldCgpXTsKIH0KIAotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYg
c2Vzc2lvbjsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7Ci0gICAgZGlzcGF0Y2hf
b25jZSgmb25jZSwgXnsKLSAgICAgICAgTlNTdHJpbmcgKmlkZW50aWZpZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVALlByaXZhdGVCcm93c2luZyIsIFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gYnVuZGxlSWRlbnRpZmllcl1dOwotICAgICAgICBzZXNzaW9uID0gY3JlYXRlUHJpdmF0
ZVN0b3JhZ2VTZXNzaW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpZGVudGlmaWVyKTsKLSAgICB9
KTsKLQotICAgIHJldHVybiBzZXNzaW9uOwotfQotCiBib29sIFdlYlByb2Nlc3NQb29sOjppc1VS
TEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0CiB7CiAgICAgUmV0
YWluUHRyPENGVVJMUmVmPiB1cmwgPSBVUkwoVVJMKCksIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwo
KTsKQEAgLTc1NywxOSArNzQ1LDYgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6aXNVUkxLbm93bkhT
VFNIb3N0KAogICAgIHJldHVybiBfQ0ZOZXR3b3JrSXNLbm93bkhTVFNIb3N0V2l0aFNlc3Npb24o
dXJsLmdldCgpLCBudWxscHRyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRIU1RT
SG9zdHMoKQotewotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1dpdGhTZXNzaW9uKG51bGxw
dHIpOwotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1dpdGhTZXNzaW9uKHByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc2V0SFNUU0hvc3Rz
QWRkZWRBZnRlckRhdGUoZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKQotewotICAg
IE5TRGF0ZSAqc3RhcnREYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3
MDpzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MF07Ci0gICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hv
c3RzU2luY2VEYXRlKG51bGxwdHIsIChfX2JyaWRnZSBDRkRhdGVSZWYpc3RhcnREYXRlKTsKLSAg
ICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURhdGUocHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVmKXN0YXJ0RGF0ZSk7Ci19Ci0KICNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKIE9wdGlvbmFs
PHVuc2lnbmVkPiBXZWJQcm9jZXNzUG9vbDo6bm9taW5hbEZyYW1lc1BlclNlY29uZEZvckRpc3Bs
YXkoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAJKHJldmlzaW9uIDI2Mjg0NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNiAr
MjMxLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZQogICAgICAg
ICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+amF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSkpOwogICAgIGlmICghbV9jb25maWd1cmF0
aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkgJiYgbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShyZXNvbHZlUGF0
aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgp
LmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+aHN0c1N0b3JhZ2VEaXJlY3Rv
cnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRIU1RT
U3RvcmFnZURpcmVjdG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1
cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgpKSk7CiAKICAgICAvLyBSZXNvbHZlIGRpcmVj
dG9yaWVzIGZvciBmaWxlIHBhdGhzLgogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jb29raWVT
dG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkgewpAQCAtMjI0MSw2ICsyMjQzLDExIEBAIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICBpZiAoIW5ldHdvcmtDYWNoZURp
cmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShuZXR3b3JrQ2FjaGVEaXJlY3RvcnksIG5ldHdvcmtDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKKyAgICBhdXRvIGhzdHNTdG9yYWdlRGlyZWN0
b3J5ID0gcmVzb2x2ZWRIU1RTU3RvcmFnZURpcmVjdG9yeSgpOworICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAo
IWhzdHNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGhzdHNTdG9yYWdlRGlyZWN0b3J5
LCBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBib29sIHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBmYWxzZTsKICAgICBi
b29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKICAgICBh
dXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CkBAIC0yMjgyLDYgKzIyODks
OCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3Ry
aWN0aW9uc0ZvclRlc3RpbmcgPSBtX2NvbmZpZ3VyYXRpb24tPmFsbExvYWRzQmxvY2tlZEJ5RGV2
aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKTsKICAgICBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gV1RGTW92ZShuZXR3b3JrQ2FjaGVE
aXJlY3RvcnkpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CisgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGly
ZWN0b3J5ID0gV1RGTW92ZShoc3RzU3RvcmFnZURpcmVjdG9yeSk7CisgICAgbmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZShoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgbmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUgPSBtX2NvbmZpZ3VyYXRpb24t
PmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMuZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPmZh
c3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkKCk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLm5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSBtX2NvbmZp
Z3VyYXRpb24tPm5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI2Mjg0NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0
LDYgKzIyNCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24t
PmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29s
dmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVk
SFNUU1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+aHN0c1N0b3JhZ2VEaXJlY3RvcnkoKTsgfQogCiAgICAgRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2UmIGRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkgeyByZXR1cm4gbV9kZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZS5nZXQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCShyZXZpc2lvbiAyNjI4NDUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDkgKzY3LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
PiBXZWJzaQogICAgIGNvcHktPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5t
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSA9IHRoaXMtPm1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeTsKICAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLSNpZiBVU0UoR0xJQikKICAgICBjb3B5LT5tX2hzdHNT
dG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9oc3RzU3RvcmFnZURpcmVjdG9yeTsKLSNlbmRpZgog
ICAgIGNvcHktPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9sb2NhbFN0b3JhZ2VE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fYWx0ZXJuYXRpdmVTZXJ2
aWNlc0RpcmVjdG9yeSA9IHRoaXMtPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYyODQ1
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTAgKzY2LDEwIEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IFN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQotI2lmIFVTRShHTElCKSAvLyBBY2NvcmRp
bmcgdG8gcjI0NTA3NSB0aGlzIHdpbGwgZXZlbnR1YWxseSBtb3ZlIGhlcmUuCisKICAgICBjb25z
dCBTdHJpbmcmIGhzdHNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9oc3RzU3Rv
cmFnZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5n
JiYgZGlyZWN0b3J5KSB7IG1faHN0c1N0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9y
eSk7IH0KLSNlbmRpZgorCiAgICAgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQogCkBAIC0xNzQsOCArMTc0LDggQEAg
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBT
dHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OwogICAgIFN0cmluZyBt
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotI2lmIFVTRShHTElCKQogICAgIFN0cmluZyBtX2hz
dHNTdG9yYWdlRGlyZWN0b3J5OworI2lmIFVTRShHTElCKQogICAgIGJvb2wgbV9uZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29s
IG1fbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401905</attachid>
            <date>2020-06-15 10:10:45 -0700</date>
            <delta_ts>2020-06-15 10:13:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213048-20200615101044.patch</filename>
            <type>text/plain</type>
            <size>37986</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTE1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisK
IDIwMjAtMDYtMTUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFBhY2sgYnl0ZXMgYSBsaXR0bGUgdGlnaHRlciBpbiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEzLDYgKzQxMywxMyBAQAog
I2RlZmluZSBIQVZFX0JST0tFTl9ET1dOTE9BRF9SRVNVTUVfVU5MSU5LIDEKICNlbmRpZgogCisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE2MDApIFwKKyAgICB8fCAoKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkgXAorICAgIHx8
IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDcwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQUExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTQwMDAwKQorI2RlZmluZSBIQVZFX0hTVFNfU1RPUkFHRSAxCisjZW5k
aWYKKwogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNjAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKQogI2RlZmluZSBIQVZFX0NGTkVUV09SS19NRVRS
SUNTX0FQSVNfVjQgMQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2
MzA0MikKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMiBAQAorMjAyMC0wNi0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gU1BJIGZvciBIU1RTIHN0b3JhZ2UgdG8gcmVwbGFjZSBfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaHN0c1N0b3JhZ2VEaXJlY3RvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzA0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDoKKwogMjAy
MC0wNi0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJlLWVuYWJsZSBkb3dubG9hZCByZXN1bWUgdGVzdHMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCShyZXZpc2lvbiAyNjMwNDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBj
b3B5KQpAQCAtNDA3LDcgKzQwNyw3IEBAIFdURl9FWFRFUk5fQ19CRUdJTgogQ0ZEYXRhUmVmIF9D
Rk5ldHdvcmtDb3B5QVRTQ29udGV4dCh2b2lkKTsKIEJvb2xlYW4gX0NGTmV0d29ya1NldEFUU0Nv
bnRleHQoQ0ZEYXRhUmVmKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiAhSEFWRShIU1RTX1NUT1JBR0UpCiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tD
Rk5ldHdvcmtIU1RTUHJlbG9hZGVkOwogQ0ZEaWN0aW9uYXJ5UmVmIF9DRk5ldHdvcmtDb3B5SFNU
U1BvbGljaWVzKENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwogdm9pZCBfQ0ZOZXR3b3JrUmVzZXRI
U1RTKENGVVJMUmVmLCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKQEAgLTQ1OCw5ICs0NTgsMjIg
QEAgV1RGX0VYVEVSTl9DX0VORAogLSAodm9pZClfc2V0TUlNRVR5cGU6KE5TU3RyaW5nICopdHlw
ZTsKIEBlbmQKIAorI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorQGludGVyZmFjZSBfTlNIU1RTU3Rv
cmFnZSA6IE5TT2JqZWN0CistKGluc3RhbmNldHlwZSlpbml0UGVyc2lzdGVudFN0b3JlV2l0aFVS
TDoobnVsbGFibGUgTlNVUkwqKXBhdGg7CistKEJPT0wpc2hvdWxkUHJvbW90ZUhvc3RUb0hUVFBT
OihOU1N0cmluZyAqKWhvc3Q7CistKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilub25QcmVsb2FkZWRI
b3N0czsKKy0odm9pZClyZXNldEhTVFNGb3JIb3N0OihOU1N0cmluZyAqKWhvc3Q7CistKHZvaWQp
cmVzZXRIU1RTSG9zdHNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGU7CitAZW5kCisjZW5kaWYKKwog
QGludGVyZmFjZSBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICgpCiAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgb25jZSByZGFyOi8vcHJvYmxlbS80MDY1MDI0NCBpcyBpbiBhIGJ1aWxkLgogQHByb3Bl
cnR5IChjb3B5KSBOU0RpY3Rpb25hcnkgKl9zb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzOworI2lmIEhB
VkUoSFNUU19TVE9SQUdFKQorQHByb3BlcnR5IChudWxsYWJsZSwgcmV0YWluKSBfTlNIU1RTU3Rv
cmFnZSAqX2hzdHNTdG9yYWdlOworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxTZXNz
aW9uVGFzayAoKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzA0MikKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjAtMDYtMTUg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBN
YWtlIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIFNQSSBmb3IgSFNUUyBzdG9yYWdl
IHRvIHJlcGxhY2UgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0
b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMw
NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHVzZXMgQ0ZOZXR3b3JrIFNQSSBpbnRyb2R1Y2VkIGluIHJkYXI6Ly9wcm9ibGVtLzUwMTA5NjMx
IHRvIGFsbG93IEhTVFMgc3RvcmFnZSBwZXIgTlNVUkxTZXNzaW9uLgorICAgICAgICBUbyBiZSBj
b21wbGV0ZSwgSSBhbHNvIGRlcHJlY2F0ZWQgb3VyIFVJIHByb2Nlc3MgSFNUUyBzdGF0ZSByZW1v
dmFsIGF0dGVtcHQgU1BJcywgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHMgYW5kCisgICAgICAgIFdL
Q29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUsIHdoaWNoIGhhZCB0aGVpciBsYXN0
IHVzZSByZW1vdmVkIGluIHJkYXI6Ly9wcm9ibGVtLzY0MjIwODM4LgorCisgICAgICAgIEkgbWFu
dWFsbHkgdmVyaWZpZWQgdGhhdCB0aGlzIG5ldyBTUEkgcHV0cyBIU1RTIGRhdGEgaW4gdGhlIHNw
ZWNpZmllZCBsb2NhdGlvbiwgYW5kIEkgYWxzbyB2ZXJpZmllZCB0aGF0IEhTVFMKKyAgICAgICAg
c3RhdGUgcXVlcnlpbmcgYW5kIHJlbW92YWwgd29ya3Mgd2l0aCB0aGUgbmV3IENGTmV0d29yayBT
UEkgYXMgaXQgZGlkIHdpdGggdGhlIG9sZCBvbmUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpm
ZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0
ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRl
RGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpob3N0
TmFtZXNXaXRoSFNUU0NhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb25Db2NvYTo6aHN0c1N0b3JhZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpob3N0TmFtZXNXaXRoSFNUU0NhY2hlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVN
YWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMu
bW06CisgICAgICAgIChXS0NvbnRleHRSZXNldEhTVFNIb3N0cyk6CisgICAgICAgIChXS0NvbnRl
eHRSZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
OgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBoc3RzU3RvcmFn
ZURpcmVjdG9yeV0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biBzZXRIU1RTU3RvcmFnZURpcmVjdG9yeTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6cHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXNl
dEhTVFNIb3N0cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpy
ZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJl
c29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVz
b2x2ZWRIU1RTU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
OgorCiAyMDIwLTA2LTE1ICBWw61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2amFxdWV6QGln
YWxpYS5jb20+CiAKICAgICAgICAgU3VwcHJlc3MgY29tcGlsZXIgd2FybmluZ3MKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZp
c2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzNCwxMCArMTUzNCw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEEKICAgICB9CiAKICNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKFNPVVApCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgZ2V0SG9z
dE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7Ci0gICAgfQorICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hl
KSkKKyAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dp
dGhIU1RTQ2FjaGUgPSBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpAQCAtMTU4MywxMCArMTU4MSw4IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoUEEKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
U09VUCkKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6
OkhTVFNDYWNoZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgICAgICBjbGVhckhTVFNDYWNoZSgq
bmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBtb2RpZmllZFNpbmNlKTsKLSAgICB9CisgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQorICAg
ICAgICBjbGVhckhTVFNDYWNoZShzZXNzaW9uSUQsIG1vZGlmaWVkU2luY2UpOwogI2VuZGlmCiAK
ICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tp
ZXMpKSB7CkBAIC0xNjg4LDEwICsxNjg0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGbwogICAgIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkK
LSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFND
YWNoZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0
TmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgSFNUU0NhY2hlSG9zdE5hbWVzKTsKLSAgICB9
CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RT
Q2FjaGUpKQorICAgICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoc2Vzc2lvbklELCBI
U1RTQ2FjaGVIb3N0TmFtZXMpOwogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5B
VElWRV9TRVJWSUNFKQpAQCAtMTg1OSwxNSArMTg1MywxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVBbmRSZXN0cmljdFdlCiAgICAgVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVzV2l0aEhT
VFNUb0RlbGV0ZTsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7Ci0gICAgICAgICAgICBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKCpuZXR3
b3JrU3RvcmFnZVNlc3Npb24sIGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwotICAgICAgICAgICAg
aG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhk
b21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgaG9zdE5hbWVzV2l0aEhT
VFNDYWNoZSk7CisgICAgICAgIGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgPSB0aGlzLT5ob3N0TmFt
ZXNXaXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CisgICAgICAgIGhvc3RuYW1lc1dpdGhIU1RTVG9E
ZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsTm9u
Q29va2llV2Vic2l0ZURhdGFGb3IsIGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwogCi0gICAgICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGhvc3QgOiBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlKQot
ICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGhvc3QgOiBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlKQorICAgICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CiAKLSAgICAgICAgICAgIGRlbGV0ZUhTVFND
YWNoZUZvckhvc3ROYW1lcygqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0bmFtZXNXaXRoSFNU
U1RvRGVsZXRlKTsKLSAgICAgICAgfQorICAgICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFt
ZXMoc2Vzc2lvbklELCBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlKTsKICAgICB9CiAjZW5kaWYK
IApAQCAtMjA0NCwxOCArMjAzNiwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJs
ZURvbWFpbnNXCiAgICAgICAgIH0pOwogICAgIH0pKTsKICAgICAKLSAgICBhdXRvJiB3ZWJzaXRl
RGF0YVN0b3JlID0gY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhOworICAgIGF1dG8m
IHdlYnNpdGVEYXRhID0gY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhOwogICAgIAog
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q29va2ll
cykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aENvb2tp
ZXMpOworICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRIb3N0bmFtZXNXaXRo
Q29va2llcyh3ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CiAgICAgfQogICAgIAog
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0g
ICAgICAgICAgICBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Np
b24sIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7Ci0gICAgfQorICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hl
KSkKKyAgICAgICAgd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCiAgICAgaWYgKHdlYnNpdGVEYXRh
VHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9u
IDI2MzA0MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDkgKzE5Myw5IEBAIHB1YmxpYzoKICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQotICAgIHZvaWQgZ2V0SG9zdE5hbWVz
V2l0aEhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0
cmluZz4mKTsKLSAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwotICAgIHZvaWQg
Y2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgV2FsbFRpbWUg
bW9kaWZpZWRTaW5jZSk7CisgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUoUEFMOjpTZXNzaW9uSUQpIGNvbnN0OworICAgIHZvaWQgZGVsZXRlSFNUU0NhY2hlRm9ySG9z
dE5hbWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQg
Y2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOwog
I2VuZGlmCiAKICAgICB2b2lkIGZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0
YVRhc2smLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCShy
ZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcs
MTAgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29k
ZXIgPDwgYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVu
Y29kZXIgPDwgaHR0cDNFbmFibGVkOwogI2VuZGlmCisjaWYgSEFWRShIU1RTX1NUT1JBR0UpIHx8
IFVTRShTT1VQKQorICAgIGVuY29kZXIgPDwgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgZW5j
b2RlciA8PCBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyNlbmRpZgogI2lm
IFVTRShTT1VQKQogICAgIGVuY29kZXIgPDwgY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwog
ICAgIGVuY29kZXIgPDwgY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOwpAQCAtMTUzLDYgKzE1
NywxOCBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAorI2lmIEhBVkUoSFNUU19TVE9SQUdFKSB8
fCBVU0UoU09VUCkKKyAgICBPcHRpb25hbDxTdHJpbmc+IGhzdHNTdG9yYWdlRGlyZWN0b3J5Owor
ICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgaWYgKCFoc3RzU3RvcmFn
ZURpcmVjdG9yeSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisgICAgZGVjb2RlciA+PiBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKKyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisgICAgCiAjaWYgVVNFKFNPVVApCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAgZGVjb2Rl
ciA+PiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CkBAIC0yNzUsNiArMjkxLDEwIEBAIE9w
dGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXIKICAgICAgICAgLCBXVEZNb3Zl
KCphbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgICwg
V1RGTW92ZSgqaHR0cDNFbmFibGVkKQogI2VuZGlmCisjaWYgSEFWRShIU1RTX1NUT1JBR0UpIHx8
IFVTRShTT1VQKQorICAgICAgICAsIFdURk1vdmUoKmhzdHNTdG9yYWdlRGlyZWN0b3J5KQorICAg
ICAgICAsIFdURk1vdmUoKmhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorI2Vu
ZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgICAgICwgV1RGTW92ZSgqY29va2llUGVyc2lzdGVudFN0
b3JhZ2VQYXRoKQogICAgICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlw
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MzA0MikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMTAgQEAgc3RydWN0IE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBhbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgYm9vbCBo
dHRwM0VuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCisjaWYgSEFWRShIU1RTX1NUT1JBR0UpIHx8
IFVTRShTT1VQKQorICAgIFN0cmluZyBoc3RzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Cisj
ZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICBTdHJpbmcgY29va2llUGVyc2lzdGVudFN0b3JhZ2VQ
YXRoOwogICAgIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUgY29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUeXBlIHsgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZTo6VGV4dCB9OwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjYzMDQyKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzQsNiArMTM0LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gTmV0d29ya1Byb2Nl
c3M6OnNvdQogI2VuZGlmCiB9CiAKKyNpZiAhSEFWRShIU1RTX1NUT1JBR0UpCiBzdGF0aWMgdm9p
ZCBmaWx0ZXJQcmVsb2FkSFNUU0VudHJ5KGNvbnN0IHZvaWQqIGtleSwgY29uc3Qgdm9pZCogdmFs
dWUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4dCk7CkBAIC0x
NTIsMjcgKzE1Myw1MyBAQCBzdGF0aWMgdm9pZCBmaWx0ZXJQcmVsb2FkSFNUU0VudHJ5KGNvbnN0
CiAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlKHZhbCwgX2tDRk5ldHdvcmtIU1RTUHJlbG9h
ZGVkKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgaG9zdG5hbWVzLT5hZGQoKENGU3RyaW5n
UmVmKWtleSk7CiB9CisjZW5kaWYKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5hbWVz
V2l0aEhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhh
c2hTZXQ8U3RyaW5nPiYgaG9zdE5hbWVzKQorSGFzaFNldDxTdHJpbmc+IE5ldHdvcmtQcm9jZXNz
Ojpob3N0TmFtZXNXaXRoSFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QK
IHsKLSAgICBpZiAoYXV0byBIU1RTUG9saWNpZXMgPSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5SFNU
U1BvbGljaWVzKHNlc3Npb24ucGxhdGZvcm1TZXNzaW9uKCkpKSkKLSAgICAgICAgQ0ZEaWN0aW9u
YXJ5QXBwbHlGdW5jdGlvbihIU1RTUG9saWNpZXMuZ2V0KCksIGZpbHRlclByZWxvYWRIU1RTRW50
cnksICZob3N0TmFtZXMpOworICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXM7CisjaWYgSEFW
RShIU1RTX1NUT1JBR0UpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gc3RhdGljX2Nh
c3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
KSB7CisgICAgICAgIGZvciAoTlNTdHJpbmcgKmhvc3QgaW4gbmV0d29ya1Nlc3Npb24tPmhzdHNT
dG9yYWdlKCkubm9uUHJlbG9hZGVkSG9zdHMpCisgICAgICAgICAgICBob3N0TmFtZXMuYWRkKGhv
c3QpOworICAgIH0KKyNlbHNlCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CisgICAgICAgIGlmIChhdXRvIEhTVFNQb2xpY2llcyA9IGFkb3B0Q0Yo
X0NGTmV0d29ya0NvcHlIU1RTUG9saWNpZXMoc2Vzc2lvbi0+cGxhdGZvcm1TZXNzaW9uKCkpKSkK
KyAgICAgICAgICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24oSFNUU1BvbGljaWVzLmdldCgp
LCBmaWx0ZXJQcmVsb2FkSFNUU0VudHJ5LCAmaG9zdE5hbWVzKTsKKyAgICB9CisjZW5kaWYKKyAg
ICByZXR1cm4gaG9zdE5hbWVzOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RT
Q2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdE5hbWVzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykKIHsKLSAgICBmb3IgKGF1dG8mIGhvc3ROYW1l
IDogaG9zdE5hbWVzKSB7Ci0gICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgbWFrZVN0cmluZygi
aHR0cHM6Ly8iLCBob3N0TmFtZSkpOwotICAgICAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTKHVybC5j
cmVhdGVDRlVSTCgpLmdldCgpLCBzZXNzaW9uLnBsYXRmb3JtU2Vzc2lvbigpKTsKKyNpZiBIQVZF
KEhTVFNfU1RPUkFHRSkKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBzdGF0aWNfY2Fz
dDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4odGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykKKyAgICAgICAgICAg
IFtuZXR3b3JrU2Vzc2lvbi0+aHN0c1N0b3JhZ2UoKSByZXNldEhTVFNGb3JIb3N0Omhvc3ROYW1l
XTsKICAgICB9CisjZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkgeworICAgICAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogaG9zdE5hbWVzKSB7
CisgICAgICAgICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwg
aG9zdE5hbWUpKTsKKyAgICAgICAgICAgIF9DRk5ldHdvcmtSZXNldEhTVFModXJsLmNyZWF0ZUNG
VVJMKCkuZ2V0KCksIHNlc3Npb24tPnBsYXRmb3JtU2Vzc2lvbigpKTsKKyAgICAgICAgfQorICAg
IH0KKyNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiB7CiAgICAgTlNUaW1lSW50ZXJ2YWwg
dGltZUludGVydmFsID0gbW9kaWZpZWRTaW5jZS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMo
KTsKICAgICBOU0RhdGUgKmRhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2Ux
OTcwOnRpbWVJbnRlcnZhbF07Ci0KLSAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURh
dGUoc2Vzc2lvbi5wbGF0Zm9ybVNlc3Npb24oKSwgKF9fYnJpZGdlIENGRGF0ZVJlZilkYXRlKTsK
KyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBz
dGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4odGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkpCisgICAgICAgIFtuZXR3b3JrU2Vzc2lvbi0+aHN0c1N0b3JhZ2UoKSByZXNldEhT
VFNIb3N0c1NpbmNlRGF0ZTpkYXRlXTsKKyNlbHNlCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9z
dHNTaW5jZURhdGUoc2Vzc2lvbi0+cGxhdGZvcm1TZXNzaW9uKCksIChfX2JyaWRnZSBDRkRhdGVS
ZWYpZGF0ZSk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2Fj
aGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDI2MzA0MikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIE9CSkNfQ0xBU1MgTlNVUkxTZXNz
aW9uRG93bmxvYWRUYXNrOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogT0JKQ19DTEFT
UyBXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGU7CiBPQkpDX0NMQVNTIFdLTmV0d29ya1Nlc3Npb25X
ZWJTb2NrZXREZWxlZ2F0ZTsKK09CSkNfQ0xBU1MgX05TSFNUU1N0b3JhZ2U7CiAKICNpbmNsdWRl
ICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQ29jb2EuaCIKQEAgLTEw
NSw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0YXNrU2VydmVyQ29ubmVjdGlvblN1Y2Nl
ZWRlZChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOwogICAgIHZvaWQgdGFz
a0ZhaWxlZChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOwogICAgIE5TVVJM
Q3JlZGVudGlhbCAqc3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlRm9ySG9zdChjb25zdCBTdHJp
bmcmIGhvc3QsIHVpbnQxNl90IHBvcnQpIGNvbnN0OworICAgIF9OU0hTVFNTdG9yYWdlICpoc3Rz
U3RvcmFnZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNl
bCgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjYzMDQyKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxMCBAQAogCiAjaW1wb3J0ICJEZXZpY2VN
YW5hZ2VtZW50U29mdExpbmsuaCIKIAorLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNvZnQgbGluayBv
bmNlIHJkYXI6Ly9wcm9ibGVtLzUwMTA5NjMxIGlzIGluIGEgYnVpbGQgYW5kIGJvdHMgYXJlIHVw
ZGF0ZWQuCitTT0ZUX0xJTktfRlJBTUVXT1JLKENGTmV0d29yaykKK1NPRlRfTElOS19DTEFTU19P
UFRJT05BTChDRk5ldHdvcmssIF9OU0hTVFNTdG9yYWdlKQorCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBDRlN0cmluZ1JlZiBjb25zdCBXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNLZXkgPSBz
dGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQCJXZWJLaXQySFRUUFByb3h5Iik7CkBAIC0xMDkyLDYg
KzEwOTYsMTcgQEAgTlNVUkxDcmVkZW50aWFsICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzdQogICAg
IHJldHVybiBtX3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZXMuZ2V0KGtleSkuZ2V0KCk7CiB9
CiAKK19OU0hTVFNTdG9yYWdlICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpoc3RzU3RvcmFnZSgpIGNv
bnN0Cit7CisjaWYgSEFWRShIU1RTX1NUT1JBR0UpCisgICAgTlNVUkxTZXNzaW9uQ29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbiA9IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNz
aW9uLmdldCgpLmNvbmZpZ3VyYXRpb247CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHJlc3Bv
bmRzVG9TZWxlY3RvciBjaGVjayBvbmNlIHJkYXI6Ly9wcm9ibGVtLzUwMTA5NjMxIGlzIGluIGEg
YnVpbGQgYW5kIGJvdHMgYXJlIHVwZGF0ZWQuCisgICAgaWYgKFtjb25maWd1cmF0aW9uIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2hzdHNTdG9yYWdlKV0pCisgICAgICAgIHJldHVybiBt
X3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9u
Ll9oc3RzU3RvcmFnZTsKKyNlbmRpZgorICAgIHJldHVybiBuaWw7Cit9CisKIGNvbnN0IFN0cmlu
ZyYgTmV0d29ya1Nlc3Npb25Db2NvYTo6Ym91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXI7CkBAIC0xMTczLDYgKzEx
ODgsMTUgQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYQogCiAgICAg
TlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25G
b3JTZXNzaW9uSUQobV9zZXNzaW9uSUQpOwogCisjaWYgSEFWRShIU1RTX1NUT1JBR0UpCisgICAg
aWYgKCEhcGFyYW1ldGVycy5oc3RzU3RvcmFnZURpcmVjdG9yeSAmJiAhbV9zZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSkgeworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50
bHkocGFyYW1ldGVycy5oc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAg
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyByZXNwb25kc1RvU2VsZWN0b3IgY2hlY2sgb25jZSBy
ZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVk
LgorICAgICAgICBpZiAoW2NvbmZpZ3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfaHN0c1N0b3JhZ2UpXSkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uX2hzdHNTdG9yYWdl
ID0gW1thbGxvY19OU0hTVFNTdG9yYWdlSW5zdGFuY2UoKSBpbml0UGVyc2lzdGVudFN0b3JlV2l0
aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3Rv
cnkgaXNEaXJlY3Rvcnk6WUVTXV0gYXV0b3JlbGVhc2VdOworICAgIH0KKyNlbmRpZgorCiAjaWYg
SEFWRShBUFBfU1NPKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBjb25maWd1cmF0aW9u
Ll9wcmV2ZW50c0FwcFNTTyA9IHRydWU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCShy
ZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMjEgKzk0LDIzIEBAIHN0
YXRpYyBDU3RyaW5nIGJ1aWxkQWNjZXB0TGFuZ3VhZ2VzKGNvbnMKICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpLnV0ZjgoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5h
bWVzV2l0aEhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VT
ZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3ROYW1lcykKK0hhc2hTZXQ8U3RyaW5nPiBOZXR3
b3JrUHJvY2Vzczo6aG9zdE5hbWVzV2l0aEhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIGNvbnN0CiB7Ci0gICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdv
cmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgp
KSk7CisgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1lczsKKyAgICBjb25zdCBhdXRvKiBzZXNz
aW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSk7CiAgICAgc2Vzc2lvbi0+c291cE5ldHdvcmtTZXNzaW9uKCkuZ2V0SG9zdE5hbWVz
V2l0aEhTVFNDYWNoZShob3N0TmFtZXMpOworICAgIHJldHVybiBob3N0TmFtZXM7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaG9zdE5hbWVzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9z
dE5hbWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhv
c3ROYW1lcykKIHsKLSAgICBjb25zdCBhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29y
a1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Npb24oc3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkp
KTsKKyAgICBjb25zdCBhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25T
b3VwKj4obmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSk7CiAgICAgc2Vzc2lvbi0+c291cE5ldHdv
cmtTZXNzaW9uKCkuZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKGhvc3ROYW1lcyk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiB7Ci0gICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0
YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNz
aW9uLnNlc3Npb25JRCgpKSk7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0
PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpOwogICAgIHNl
c3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmNsZWFySFNUU0NhY2hlKG1vZGlmaWVkU2luY2Up
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJl
dmlzaW9uIDI2MzA0MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyMiw4ICs0MjIsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6TWVzc2FnZU5hbWUpOwogCiAgICAg
Ym9vbCBpc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0Owot
ICAgIHZvaWQgcmVzZXRIU1RTSG9zdHMoKTsKLSAgICB2b2lkIHJlc2V0SFNUU0hvc3RzQWRkZWRB
ZnRlckRhdGUoZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKTsKIAogICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRs
ZXJzKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJHbG9iYWxVUkxT
Y2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRl
eHRQcml2YXRlTWFjLmgJKHJldmlzaW9uIDI2MzA0MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKICNkZWZpbmUgV0tDb250ZXh0UHJpdmF0ZU1hY19oCiAKICNpbmNsdWRlIDxX
ZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS1BsdWdpbkxvYWRQb2xpY3kuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBA
IC00MywxMCArNDQsOCBAQCBXS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLQ29udGV4dENvcHlQ
CiB0eXBlZGVmIHZvaWQgKF5XS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0luc0Jsb2Nr
KShXS0FycmF5UmVmLCBXS0Vycm9yUmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dEdldElu
Zm9Gb3JJbnN0YWxsZWRQbHVnSW5zKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRHZXRJ
bmZvRm9ySW5zdGFsbGVkUGx1Z0luc0Jsb2NrIGJsb2NrKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0UmVzZXRIU1RTSG9zdHMoV0tDb250ZXh0UmVmIGNvbnRleHQpOwotCi0vLyBUaGUgdGlt
ZSBoZXJlIGlzIHJlbGF0aXZlIHRvIHRoZSBVbml4IGVwb2NoLgotV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShXS0NvbnRleHRSZWYgY29udGV4dCwg
ZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJlZiBjb250ZXh0KSBXS19DX0FQSV9ERVBSRUNB
VEVEOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0
ZShXS0NvbnRleHRSZWYgY29udGV4dCwgZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcw
KSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZWdpc3Rl
clNjaGVtZUZvckN1c3RvbVByb3RvY29sKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1Jl
ZiBzY2hlbWUpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0VW5yZWdpc3RlclNjaGVtZUZvckN1
c3RvbVByb3RvY29sKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBzY2hlbWUpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMubW0JKHJldmlzaW9uIDI2MzA0MikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsMTQgKzEwMSwxMiBAQCB2b2lkIFdLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQ
bHVnSW5zCiAjZW5kaWYKIH0KIAotdm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0cyhXS0NvbnRl
eHRSZWYgY29udGV4dCkKK3ZvaWQgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHMoV0tDb250ZXh0UmVm
KQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+cmVzZXRIU1RTSG9zdHMo
KTsKIH0KIAotdm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBkb3VibGUgc3RhcnREYXRlSW50ZXJ2YWxTaW5jZTE5NzApCit2b2lk
IFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoV0tDb250ZXh0UmVmLCBkb3Vi
bGUpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGNvbnRleHQpLT5yZXNldEhTVFNIb3N0
c0FkZGVkQWZ0ZXJEYXRlKHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKTsKIH0KIAogdm9pZCBX
S0NvbnRleHRSZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS1N0cmluZ1JlZiBzY2hlbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcg
KzY4LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMAogQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgdXNlc1dlYlByb2Nlc3NDYWNoZSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
cGFnZUNhY2hlRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjAp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNKSVRFbmFibGVkKSBCT09MIEpJVEVu
YWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwgc2V0dGVyPXNldEhTVFNTdG9yYWdlRGly
ZWN0b3J5OikgTlNVUkwgKmhzdHNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTUpLCBpb3MoMTMuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBj
b3B5LCBzZXR0ZXI9c2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnk6KSBOU1VSTCAqaHN0c1N0b3JhZ2VE
aXJlY3RvcnkgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaHN0c1N0b3JhZ2VEaXJlY3RvcnkiLCBtYWNvcygxMC4xNSwg
V0tfTUFDX1RCQSksIGlvcygxMy4wLCBXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIGNvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2MzA0MikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygx
MC4xMyksIGlvcygxMS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1VJbnRlZ2VyIHRlc3RTcGVl
ZE11bHRpcGxpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHN1cHByZXNzZXNDb25uZWN0aW9u
VGVybWluYXRpb25PblN5c3RlbUNoYW5nZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxsb3dz
U2VydmVyUHJlY29ubmVjdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5LCBzZXR0
ZXI9c2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnk6KSBOU1VSTCAqaHN0c1N0b3JhZ2VEaXJlY3Rvcnkg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAog
QHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1VSTCAqYWx0ZXJuYXRpdmVT
ZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjYzMDQyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTAsNiArMjkwLDE5IEBAIC0gKHZvaWQpc2V0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeTooTlMKICAgICBfY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSh1cmwucGF0aCk7CiB9CiAKKy0gKE5TVVJMICopaHN0c1N0b3JhZ2VEaXJlY3RvcnkKK3sK
KyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+aHN0c1N0
b3JhZ2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOworfQorCistICh2b2lkKXNldEhTVFNT
dG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAoreworICAgIGlmICghX2NvbmZpZ3VyYXRpb24t
PmlzUGVyc2lzdGVudCgpKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQ2Fubm90IHNldCBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5IG9uIGEgbm9uLXBlcnNpc3RlbnQgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Il07CisgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRI
U1RTU3RvcmFnZURpcmVjdG9yeSh1cmwucGF0aCk7Cit9CisKIC0gKE5TVVJMICopYWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkKIHsKICAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpfY29uZmlndXJhdGlvbi0+YWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSgpIGlz
RGlyZWN0b3J5OllFU107CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI2MzA0MikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTc0NiwxOCArNzQ2LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rl
ck5vdGlmaWNhdAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVt
b3ZlT2JzZXJ2ZXI6bV9hY3RpdmF0aW9uT2JzZXJ2ZXIuZ2V0KCldOwogfQogCi1zdGF0aWMgQ0ZV
UkxTdG9yYWdlU2Vzc2lvblJlZiBwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKLXsKLSAgICBzdGF0
aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzZXNzaW9uOwotICAgIHN0YXRpYyBkaXNwYXRjaF9v
bmNlX3Qgb25jZTsKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeewotICAgICAgICBOU1N0cmlu
ZyAqaWRlbnRpZmllciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAuUHJpdmF0ZUJy
b3dzaW5nIiwgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXV07Ci0gICAg
ICAgIHNlc3Npb24gPSBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKWlkZW50aWZpZXIpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIHNlc3Npb247Ci19Ci0K
IGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFVSTChVUkwo
KSwgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgpOwpAQCAtNzY1LDE5ICs3NTMsNiBAQCBib29sIFdl
YlByb2Nlc3NQb29sOjppc1VSTEtub3duSFNUU0hvc3QoCiAgICAgcmV0dXJuIF9DRk5ldHdvcmtJ
c0tub3duSFNUU0hvc3RXaXRoU2Vzc2lvbih1cmwuZ2V0KCksIG51bGxwdHIpOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpyZXNldEhTVFNIb3N0cygpCi17Ci0gICAgX0NGTmV0d29ya1Jlc2V0
SFNUU0hvc3RzV2l0aFNlc3Npb24obnVsbHB0cik7Ci0gICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hv
c3RzV2l0aFNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpKTsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShkb3VibGUgc3RhcnREYXRl
SW50ZXJ2YWxTaW5jZTE5NzApCi17Ci0gICAgTlNEYXRlICpzdGFydERhdGUgPSBbTlNEYXRlIGRh
dGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwXTsK
LSAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURhdGUobnVsbHB0ciwgKF9fYnJpZGdl
IENGRGF0ZVJlZilzdGFydERhdGUpOwotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1NpbmNl
RGF0ZShwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIChfX2JyaWRnZSBDRkRhdGVSZWYpc3RhcnRE
YXRlKTsKLX0KLQogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9X
U0VSVkVSX0JMT0NLSU5HKQogT3B0aW9uYWw8dW5zaWduZWQ+IFdlYlByb2Nlc3NQb29sOjpub21p
bmFsRnJhbWVzUGVyU2Vjb25kRm9yRGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjYzMDQyKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMSw2ICsyMzEsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnJlc29sdmVEaXJlY3RvcmllCiAgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRK
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRl
bnNpb24obV9jb25maWd1cmF0aW9uLT5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgp
KSk7CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpLmlz
RW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5
KCkuaXNFbXB0eSgpKQogICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3Vy
YXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRp
b24tPmhzdHNTdG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0eSgpICYmIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24tPnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KHJlc29sdmVQYXRoRm9y
U2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmhzdHNTdG9yYWdlRGlyZWN0b3J5KCkp
KTsKIAogICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgZm9yIGZpbGUgcGF0aHMuCiAgICAgaWYg
KCFtX2NvbmZpZ3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkuaXNFbXB0eSgpKSB7CkBAIC0y
MjQxLDYgKzIyNDMsMTEgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFT
dAogICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KG5ldHdvcmtD
YWNoZURpcmVjdG9yeSwgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAor
ICAgIGF1dG8gaHN0c1N0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlZEhTVFNTdG9yYWdlRGlyZWN0
b3J5KCk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhzdHNTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOworICAgIGlmICghaHN0c1N0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgp
KQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkoaHN0c1N0b3JhZ2VEaXJlY3RvcnksIGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKKwogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZSA9IGZhbHNlOwogICAgIGF1dG8gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0
Q29va2llczsKQEAgLTIyODIsNiArMjI4OSw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
IFdlYnNpdGVEYXRhU3QKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuYWxsTG9hZHNCbG9j
a2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyA9IG1fY29uZmlndXJh
dGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVz
dGluZygpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkgPSBXVEZNb3ZlKG5ldHdvcmtDYWNoZURpcmVjdG9yeSk7CiAgICAgbmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
bmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGhzdHNTdG9yYWdlRGly
ZWN0b3J5KTsKKyAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZSA9IG1fY29uZmlndXJhdGlvbi0+ZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSgpOwog
ICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5h
YmxlZCA9IG1fY29uZmlndXJhdGlvbi0+ZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQo
KTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubmV0d29ya0NhY2hlU3BlY3VsYXRpdmVW
YWxpZGF0aW9uRW5hYmxlZCA9IG1fY29uZmlndXJhdGlvbi0+bmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVWYWxpZGF0aW9uRW5hYmxlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjYzMDQy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiArMjI0LDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgcmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsg
fQogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2
ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsgfQor
ICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRIU1RTU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgpOyB9
CiAKICAgICBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSYgZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2Uo
KSB7IHJldHVybiBtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmdldCgpOyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI2MzA0MikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsOSArNjcsNyBAQCBSZWY8V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpCiAgICAgY29weS0+bV9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAg
ICAgY29weS0+bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gdGhpcy0+bV9z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OwogICAgIGNvcHktPm1fd2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotI2lmIFVT
RShHTElCKQogICAgIGNvcHktPm1faHN0c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2hzdHNT
dG9yYWdlRGlyZWN0b3J5OwotI2VuZGlmCiAgICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX21lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAg
ICAgY29weS0+bV9hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5ID0gdGhpcy0+bV9hbHRlcm5h
dGl2ZVNlcnZpY2VzRGlyZWN0b3J5OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiB3ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnk7IH0KICAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVj
dG9yeSkgeyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9
Ci0jaWYgVVNFKEdMSUIpIC8vIEFjY29yZGluZyB0byByMjQ1MDc1IHRoaXMgd2lsbCBldmVudHVh
bGx5IG1vdmUgaGVyZS4KKwogICAgIGNvbnN0IFN0cmluZyYgaHN0c1N0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRI
U1RTU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9oc3RzU3RvcmFnZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQotI2VuZGlmCisKICAgICBjb25zdCBTdHJp
bmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYg
ZGlyZWN0b3J5KSB7IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3Rvcnkp
OyB9CiAKQEAgLTE3NCw4ICsxNzQsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0jaWYg
VVNFKEdMSUIpCiAgICAgU3RyaW5nIG1faHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisjaWYgVVNFKEdM
SUIpCiAgICAgYm9vbCBtX25ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQg
eyB0cnVlIH07CiAjZWxzZQogICAgIGJvb2wgbV9uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlk
YXRpb25FbmFibGVkIHsgZmFsc2UgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401907</attachid>
            <date>2020-06-15 10:13:26 -0700</date>
            <delta_ts>2020-06-15 13:04:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213048-20200615101325.patch</filename>
            <type>text/plain</type>
            <size>37987</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTE1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisK
IDIwMjAtMDYtMTUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFBhY2sgYnl0ZXMgYSBsaXR0bGUgdGlnaHRlciBpbiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUhhdmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEzLDYgKzQxMywxMyBAQAog
I2RlZmluZSBIQVZFX0JST0tFTl9ET1dOTE9BRF9SRVNVTUVfVU5MSU5LIDEKICNlbmRpZgogCisj
aWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE2MDApIFwKKyAgICB8fCAoKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
KSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApIFwKKyAgICB8
fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSA3MDAwMCkgXAorICAgIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDE0MDAwMCkKKyNkZWZpbmUgSEFWRV9IU1RTX1NUT1JBR0UgMQorI2Vu
ZGlmCisKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkKICNkZWZpbmUgSEFWRV9DRk5FVFdPUktfTUVU
UklDU19BUElTX1Y0IDEKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NjMwNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMjAtMDYtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uIFNQSSBmb3IgSFNUUyBzdG9yYWdlIHRvIHJlcGxhY2UgX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIw
MjAtMDYtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZS1lbmFibGUgZG93bmxvYWQgcmVzdW1lIHRlc3RzCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjYzMDQyKQor
KysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQwNyw3ICs0MDcsNyBAQCBXVEZfRVhURVJOX0NfQkVHSU4KIENGRGF0YVJlZiBf
Q0ZOZXR3b3JrQ29weUFUU0NvbnRleHQodm9pZCk7CiBCb29sZWFuIF9DRk5ldHdvcmtTZXRBVFND
b250ZXh0KENGRGF0YVJlZik7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShD
T0NPQSkgJiYgIUhBVkUoSFNUU19TVE9SQUdFKQogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9r
Q0ZOZXR3b3JrSFNUU1ByZWxvYWRlZDsKIENGRGljdGlvbmFyeVJlZiBfQ0ZOZXR3b3JrQ29weUhT
VFNQb2xpY2llcyhDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKIHZvaWQgX0NGTmV0d29ya1Jlc2V0
SFNUUyhDRlVSTFJlZiwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CkBAIC00NTgsOSArNDU4LDIy
IEBAIFdURl9FWFRFUk5fQ19FTkQKIC0gKHZvaWQpX3NldE1JTUVUeXBlOihOU1N0cmluZyAqKXR5
cGU7CiBAZW5kCiAKKyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKK0BpbnRlcmZhY2UgX05TSFNUU1N0
b3JhZ2UgOiBOU09iamVjdAorLShpbnN0YW5jZXR5cGUpaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhV
Ukw6KG51bGxhYmxlIE5TVVJMKilwYXRoOworLShCT09MKXNob3VsZFByb21vdGVIb3N0VG9IVFRQ
UzooTlNTdHJpbmcgKilob3N0OworLShOU0FycmF5PE5TU3RyaW5nICo+ICopbm9uUHJlbG9hZGVk
SG9zdHM7CistKHZvaWQpcmVzZXRIU1RTRm9ySG9zdDooTlNTdHJpbmcgKilob3N0OworLSh2b2lk
KXJlc2V0SFNUU0hvc3RzU2luY2VEYXRlOihOU0RhdGUgKilkYXRlOworQGVuZAorI2VuZGlmCisK
IEBpbnRlcmZhY2UgTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAoKQogLy8gRklYTUU6IFJlbW92
ZSB0aGlzIG9uY2UgcmRhcjovL3Byb2JsZW0vNDA2NTAyNDQgaXMgaW4gYSBidWlsZC4KIEBwcm9w
ZXJ0eSAoY29weSkgTlNEaWN0aW9uYXJ5ICpfc29ja2V0U3RyZWFtUHJvcGVydGllczsKKyNpZiBI
QVZFKEhTVFNfU1RPUkFHRSkKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIHJldGFpbikgX05TSFNUU1N0
b3JhZ2UgKl9oc3RzU3RvcmFnZTsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIE5TVVJMU2Vz
c2lvblRhc2sgKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDIwLTA2LTE1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
TWFrZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFn
ZSB0byByZXBsYWNlIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVj
dG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
MDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyB1c2VzIENGTmV0d29yayBTUEkgaW50cm9kdWNlZCBpbiByZGFyOi8vcHJvYmxlbS81MDEwOTYz
MSB0byBhbGxvdyBIU1RTIHN0b3JhZ2UgcGVyIE5TVVJMU2Vzc2lvbi4KKyAgICAgICAgVG8gYmUg
Y29tcGxldGUsIEkgYWxzbyBkZXByZWNhdGVkIG91ciBVSSBwcm9jZXNzIEhTVFMgc3RhdGUgcmVt
b3ZhbCBhdHRlbXB0IFNQSXMsIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzIGFuZAorICAgICAgICBX
S0NvbnRleHRSZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlLCB3aGljaCBoYWQgdGhlaXIgbGFz
dCB1c2UgcmVtb3ZlZCBpbiByZGFyOi8vcHJvYmxlbS82NDIyMDgzOC4KKworICAgICAgICBJIG1h
bnVhbGx5IHZlcmlmaWVkIHRoYXQgdGhpcyBuZXcgU1BJIHB1dHMgSFNUUyBkYXRhIGluIHRoZSBz
cGVjaWZpZWQgbG9jYXRpb24sIGFuZCBJIGFsc28gdmVyaWZpZWQgdGhhdCBIU1RTCisgICAgICAg
IHN0YXRlIHF1ZXJ5aW5nIGFuZCByZW1vdmFsIHdvcmtzIHdpdGggdGhlIG5ldyBDRk5ldHdvcmsg
U1BJIGFzIGl0IGRpZCB3aXRoIHRoZSBvbGQgb25lLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0
ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aG9z
dE5hbWVzV2l0aEhTVFNDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmhzdHNTdG9yYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6aG9zdE5hbWVzV2l0aEhTVFNDYWNoZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRl
TWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tOgorICAgICAgICAoV0tDb250ZXh0UmVzZXRIU1RTSG9zdHMpOgorICAgICAgICAoV0tDb250
ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5t
bToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gaHN0c1N0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24gc2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVz
ZXRIU1RTSG9zdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpy
ZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJl
c29sdmVkSFNUU1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aDoKKwogMjAyMC0wNi0xNSAgVsOtY3RvciBNYW51ZWwgSsOhcXVleiBMZWFsICA8dmphcXVlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFN1cHByZXNzIGNvbXBpbGVyIHdhcm5pbmdzCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2
aXNpb24gMjYzMDQyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzQsMTAgKzE1MzQsOCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBCiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShTT1VQKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIGdldEhv
c3ROYW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwotICAgIH0KKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNo
ZSkpCisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNX
aXRoSFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTE1ODMsMTAgKzE1ODEsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2lu
Y2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KFNPVVApCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpIU1RTQ2FjaGUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgY2xlYXJIU1RTQ2FjaGUo
Km5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgbW9kaWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKKyAg
ICAgICAgY2xlYXJIU1RTQ2FjaGUoc2Vzc2lvbklELCBtb2RpZmllZFNpbmNlKTsKICNlbmRpZgog
CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDb29r
aWVzKSkgewpAQCAtMTY4OCwxMCArMTY4NCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0
ZVdlYnNpdGVEYXRhRm8KICAgICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVAp
Ci0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RT
Q2FjaGUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9z
dE5hbWVzKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIEhTVFNDYWNoZUhvc3ROYW1lcyk7Ci0gICAg
fQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNU
U0NhY2hlKSkKKyAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKHNlc3Npb25JRCwg
SFNUU0NhY2hlSG9zdE5hbWVzKTsKICNlbmRpZgogCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJO
QVRJVkVfU0VSVklDRSkKQEAgLTE4NTksMTUgKzE4NTMsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZGVsZXRlQW5kUmVzdHJpY3RXZQogICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lc1dpdGhI
U1RTVG9EZWxldGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3
ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewot
ICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkgewotICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKLSAgICAgICAgICAg
IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMo
ZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGhvc3ROYW1lc1dpdGhI
U1RTQ2FjaGUpOworICAgICAgICBob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gdGhpcy0+aG9zdE5h
bWVzV2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOworICAgICAgICBob3N0bmFtZXNXaXRoSFNUU1Rv
RGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFsbE5v
bkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKIAotICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSkK
LSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSkKKyAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOwogCi0gICAgICAgICAgICBkZWxldGVIU1RT
Q2FjaGVGb3JIb3N0TmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgaG9zdG5hbWVzV2l0aEhT
VFNUb0RlbGV0ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5h
bWVzKHNlc3Npb25JRCwgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSk7CiAgICAgfQogI2VuZGlm
CiAKQEAgLTIwNDQsMTggKzIwMzYsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFi
bGVEb21haW5zVwogICAgICAgICB9KTsKICAgICB9KSk7CiAgICAgCi0gICAgYXV0byYgd2Vic2l0
ZURhdGFTdG9yZSA9IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKKyAgICBhdXRv
JiB3ZWJzaXRlRGF0YSA9IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKICAgICAK
ICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tp
ZXMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5n
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyh3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29r
aWVzKTsKKyAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMod2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aENvb2tpZXMpOwogICAgIH0KICAgICAK
ICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQot
ICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwotICAgIH0KKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNo
ZSkpCisgICAgICAgIHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgPSBob3N0TmFt
ZXNXaXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CiAjZW5kaWYKIAogICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lv
biAyNjMwNDIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw5ICsxOTMsOSBAQCBwdWJsaWM6CiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdDsKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKLSAgICB2b2lkIGdldEhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxT
dHJpbmc+Jik7Ci0gICAgdm9pZCBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLSAgICB2b2lk
IGNsZWFySFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UpOworICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXNXaXRoSFNUU0Nh
Y2hlKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKKyAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhv
c3ROYW1lcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lk
IGNsZWFySFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklELCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0Rh
dGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAko
cmV2aXNpb24gMjYzMDQyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3
LDEwIEBAIHZvaWQgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmUKICAgICBlbmNv
ZGVyIDw8IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBl
bmNvZGVyIDw8IGh0dHAzRW5hYmxlZDsKICNlbmRpZgorI2lmIEhBVkUoSFNUU19TVE9SQUdFKSB8
fCBVU0UoU09VUCkKKyAgICBlbmNvZGVyIDw8IGhzdHNTdG9yYWdlRGlyZWN0b3J5OworICAgIGVu
Y29kZXIgPDwgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisjZW5kaWYKICNp
ZiBVU0UoU09VUCkKICAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsK
ICAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZTsKQEAgLTE1Myw2ICsx
NTcsMTggQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcgogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKKyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkg
fHwgVVNFKFNPVVApCisgICAgT3B0aW9uYWw8U3RyaW5nPiBoc3RzU3RvcmFnZURpcmVjdG9yeTsK
KyAgICBkZWNvZGVyID4+IGhzdHNTdG9yYWdlRGlyZWN0b3J5OworICAgIGlmICghaHN0c1N0b3Jh
Z2VEaXJlY3RvcnkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOworICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CisgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIAogI2lmIFVTRShTT1VQKQogICAg
IE9wdGlvbmFsPFN0cmluZz4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGRlY29k
ZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwpAQCAtMjc1LDYgKzI5MSwxMCBAQCBP
cHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyCiAgICAgICAgICwgV1RGTW92
ZSgqYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICAs
IFdURk1vdmUoKmh0dHAzRW5hYmxlZCkKICNlbmRpZgorI2lmIEhBVkUoSFNUU19TVE9SQUdFKSB8
fCBVU0UoU09VUCkKKyAgICAgICAgLCBXVEZNb3ZlKCpoc3RzU3RvcmFnZURpcmVjdG9yeSkKKyAg
ICAgICAgLCBXVEZNb3ZlKCpoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKKyNl
bmRpZgogI2lmIFVTRShTT1VQKQogICAgICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRT
dG9yYWdlUGF0aCkKICAgICAgICAgLCBXVEZNb3ZlKCpjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5
cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNjMwNDIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDEwIEBAIHN0cnVjdCBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGJvb2wg
aHR0cDNFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgorI2lmIEhBVkUoSFNUU19TVE9SQUdFKSB8
fCBVU0UoU09VUCkKKyAgICBTdHJpbmcgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwor
I2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgU3RyaW5nIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
UGF0aDsKICAgICBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlIGNvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlVHlwZSB7IFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU6OlRleHQgfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2MzA0MikKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDYgKzEzNCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9j
ZXNzOjpzb3UKICNlbmRpZgogfQogCisjaWYgIUhBVkUoSFNUU19TVE9SQUdFKQogc3RhdGljIHZv
aWQgZmlsdGVyUHJlbG9hZEhTVFNFbnRyeShjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIHZh
bHVlLCB2b2lkKiBjb250ZXh0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQpOwpAQCAt
MTUyLDI3ICsxNTMsNTMgQEAgc3RhdGljIHZvaWQgZmlsdGVyUHJlbG9hZEhTVFNFbnRyeShjb25z
dAogICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1ZSh2YWwsIF9rQ0ZOZXR3b3JrSFNUU1ByZWxv
YWRlZCkgIT0ga0NGQm9vbGVhblRydWUpCiAgICAgICAgIGhvc3RuYW1lcy0+YWRkKChDRlN0cmlu
Z1JlZilrZXkpOwogfQorI2VuZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBI
YXNoU2V0PFN0cmluZz4mIGhvc3ROYW1lcykKK0hhc2hTZXQ8U3RyaW5nPiBOZXR3b3JrUHJvY2Vz
czo6aG9zdE5hbWVzV2l0aEhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0
CiB7Ci0gICAgaWYgKGF1dG8gSFNUU1BvbGljaWVzID0gYWRvcHRDRihfQ0ZOZXR3b3JrQ29weUhT
VFNQb2xpY2llcyhzZXNzaW9uLnBsYXRmb3JtU2Vzc2lvbigpKSkpCi0gICAgICAgIENGRGljdGlv
bmFyeUFwcGx5RnVuY3Rpb24oSFNUU1BvbGljaWVzLmdldCgpLCBmaWx0ZXJQcmVsb2FkSFNUU0Vu
dHJ5LCAmaG9zdE5hbWVzKTsKKyAgICBIYXNoU2V0PFN0cmluZz4gaG9zdE5hbWVzOworI2lmIEhB
VkUoSFNUU19TVE9SQUdFKQorICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHN0YXRpY19j
YXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPih0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSkgeworICAgICAgICBmb3IgKE5TU3RyaW5nICpob3N0IGluIG5ldHdvcmtTZXNzaW9uLT5oc3Rz
U3RvcmFnZSgpLm5vblByZWxvYWRlZEhvc3RzKQorICAgICAgICAgICAgaG9zdE5hbWVzLmFkZCho
b3N0KTsKKyAgICB9CisjZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byBIU1RTUG9saWNpZXMgPSBhZG9wdENG
KF9DRk5ldHdvcmtDb3B5SFNUU1BvbGljaWVzKHNlc3Npb24tPnBsYXRmb3JtU2Vzc2lvbigpKSkp
CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKEhTVFNQb2xpY2llcy5nZXQo
KSwgZmlsdGVyUHJlbG9hZEhTVFNFbnRyeSwgJmhvc3ROYW1lcyk7CisgICAgfQorI2VuZGlmCisg
ICAgcmV0dXJuIGhvc3ROYW1lczsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNU
U0NhY2hlRm9ySG9zdE5hbWVzKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBob3N0TmFt
ZSA6IGhvc3ROYW1lcykgewotICAgICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIG1ha2VTdHJpbmco
Imh0dHBzOi8vIiwgaG9zdE5hbWUpKTsKLSAgICAgICAgX0NGTmV0d29ya1Jlc2V0SFNUUyh1cmwu
Y3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2Vzc2lvbi5wbGF0Zm9ybVNlc3Npb24oKSk7CisjaWYgSEFW
RShIU1RTX1NUT1JBR0UpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gc3RhdGljX2Nh
c3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
KSB7CisgICAgICAgIGZvciAoYXV0byYgaG9zdE5hbWUgOiBob3N0TmFtZXMpCisgICAgICAgICAg
ICBbbmV0d29ya1Nlc3Npb24tPmhzdHNTdG9yYWdlKCkgcmVzZXRIU1RTRm9ySG9zdDpob3N0TmFt
ZV07CiAgICAgfQorI2Vsc2UKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykg
eworICAgICAgICAgICAgYXV0byB1cmwgPSBVUkwoeyB9LCBtYWtlU3RyaW5nKCJodHRwczovLyIs
IGhvc3ROYW1lKSk7CisgICAgICAgICAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTKHVybC5jcmVhdGVD
RlVSTCgpLmdldCgpLCBzZXNzaW9uLT5wbGF0Zm9ybVNlc3Npb24oKSk7CisgICAgICAgIH0KKyAg
ICB9CisjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQogewogICAgIE5TVGltZUludGVydmFs
IHRpbWVJbnRlcnZhbCA9IG1vZGlmaWVkU2luY2Uuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRz
KCk7CiAgICAgTlNEYXRlICpkYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNl
MTk3MDp0aW1lSW50ZXJ2YWxdOwotCi0gICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VE
YXRlKHNlc3Npb24ucGxhdGZvcm1TZXNzaW9uKCksIChfX2JyaWRnZSBDRkRhdGVSZWYpZGF0ZSk7
CisjaWYgSEFWRShIU1RTX1NUT1JBR0UpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0g
c3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpKQorICAgICAgICBbbmV0d29ya1Nlc3Npb24tPmhzdHNTdG9yYWdlKCkgcmVzZXRI
U1RTSG9zdHNTaW5jZURhdGU6ZGF0ZV07CisjZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hv
c3RzU2luY2VEYXRlKHNlc3Npb24tPnBsYXRmb3JtU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRl
UmVmKWRhdGUpOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0Nh
Y2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCShyZXZpc2lvbiAyNjMwNDIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vz
c2lvbkRvd25sb2FkVGFzazsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKIE9CSkNfQ0xB
U1MgV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOwogT0JKQ19DTEFTUyBXS05ldHdvcmtTZXNzaW9u
V2ViU29ja2V0RGVsZWdhdGU7CitPQkpDX0NMQVNTIF9OU0hTVFNTdG9yYWdlOwogCiAjaW5jbHVk
ZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCkBAIC0x
MDUsNiArMTA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFza1NlcnZlckNvbm5lY3Rpb25TdWNj
ZWVkZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKICAgICB2b2lkIHRh
c2tGYWlsZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKICAgICBOU1VS
TENyZWRlbnRpYWwgKnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgU3Ry
aW5nJiBob3N0LCB1aW50MTZfdCBwb3J0KSBjb25zdDsKKyAgICBfTlNIU1RTU3RvcmFnZSAqaHN0
c1N0b3JhZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5j
ZWwoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2MzA0MikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTAgQEAKIAogI2ltcG9ydCAiRGV2aWNl
TWFuYWdlbWVudFNvZnRMaW5rLmgiCiAKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzb2Z0IGxpbmsg
b25jZSByZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1
cGRhdGVkLgorU09GVF9MSU5LX0ZSQU1FV09SSyhDRk5ldHdvcmspCitTT0ZUX0xJTktfQ0xBU1Nf
T1BUSU9OQUwoQ0ZOZXR3b3JrLCBfTlNIU1RTU3RvcmFnZSkKKwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIAogQ0ZTdHJpbmdSZWYgY29uc3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5ID0g
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KEAiV2ViS2l0MkhUVFBQcm94eSIpOwpAQCAtMTA5Miw2
ICsxMDk2LDE3IEBAIE5TVVJMQ3JlZGVudGlhbCAqTmV0d29ya1Nlc3Npb25Db2NvYTo6c3UKICAg
ICByZXR1cm4gbV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmdldChrZXkpLmdldCgpOwog
fQogCitfTlNIU1RTU3RvcmFnZSAqTmV0d29ya1Nlc3Npb25Db2NvYTo6aHN0c1N0b3JhZ2UoKSBj
b25zdAoreworI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3Vy
YXRpb24gKmNvbmZpZ3VyYXRpb24gPSBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vz
c2lvbi5nZXQoKS5jb25maWd1cmF0aW9uOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyByZXNw
b25kc1RvU2VsZWN0b3IgY2hlY2sgb25jZSByZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBpbiBh
IGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgorICAgIGlmIChbY29uZmlndXJhdGlvbiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9oc3RzU3RvcmFnZSldKQorICAgICAgICByZXR1cm4g
bV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlv
bi5faHN0c1N0b3JhZ2U7CisjZW5kaWYKKyAgICByZXR1cm4gbmlsOworfQorCiBjb25zdCBTdHJp
bmcmIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwpAQCAtMTE3Myw2ICsx
MTg4LDE1IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKIAogICAg
IE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9u
Rm9yU2Vzc2lvbklEKG1fc2Vzc2lvbklEKTsKIAorI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorICAg
IGlmICghIXBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkgJiYgIW1fc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkpIHsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KHBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAg
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgcmVzcG9uZHNUb1NlbGVjdG9yIGNoZWNrIG9uY2Ug
cmRhcjovL3Byb2JsZW0vNTAxMDk2MzEgaXMgaW4gYSBidWlsZCBhbmQgYm90cyBhcmUgdXBkYXRl
ZC4KKyAgICAgICAgaWYgKFtjb25maWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX2hzdHNTdG9yYWdlKV0pCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLl9oc3RzU3RvcmFn
ZSA9IFtbYWxsb2NfTlNIU1RTU3RvcmFnZUluc3RhbmNlKCkgaW5pdFBlcnNpc3RlbnRTdG9yZVdp
dGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0
b3J5IGlzRGlyZWN0b3J5OllFU11dIGF1dG9yZWxlYXNlXTsKKyAgICB9CisjZW5kaWYKKwogI2lm
IEhBVkUoQVBQX1NTTykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY29uZmlndXJhdGlv
bi5fcHJldmVudHNBcHBTU08gPSB0cnVlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAko
cmV2aXNpb24gMjYzMDQyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtQcm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDIxICs5NCwyMyBAQCBz
dGF0aWMgQ1N0cmluZyBidWlsZEFjY2VwdExhbmd1YWdlcyhjb25zCiAgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdl
U2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0TmFtZXMpCitIYXNoU2V0PFN0cmluZz4gTmV0
d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSBjb25zdAogewotICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3
b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQo
KSkpOworICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXM7CisgICAgY29uc3QgYXV0byogc2Vz
c2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpOwogICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmdldEhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUoaG9zdE5hbWVzKTsKKyAgICByZXR1cm4gaG9zdE5hbWVzOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGhvc3ROYW1lcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhv
c3ROYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBo
b3N0TmFtZXMpCiB7Ci0gICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdv
cmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgp
KSk7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9u
U291cCo+KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpOwogICAgIHNlc3Npb24tPnNvdXBOZXR3
b3JrU2Vzc2lvbigpLmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhob3N0TmFtZXMpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQogewotICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBz
dGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vz
c2lvbi5zZXNzaW9uSUQoKSkpOworICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2Fz
dDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICBz
ZXNzaW9uLT5zb3VwTmV0d29ya1Nlc3Npb24oKS5jbGVhckhTVFNDYWNoZShtb2RpZmllZFNpbmNl
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShy
ZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjIsOCArNDIyLDYgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lKTsKIAogICAg
IGJvb2wgaXNVUkxLbm93bkhTVFNIb3N0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsK
LSAgICB2b2lkIHJlc2V0SFNUU0hvc3RzKCk7Ci0gICAgdm9pZCByZXNldEhTVFNIb3N0c0FkZGVk
QWZ0ZXJEYXRlKGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7CiAKICAgICBzdGF0
aWMgdm9pZCByZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5k
bGVycyhjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyR2xvYmFsVVJM
U2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmluZyYpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5oCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIFdLQ29udGV4dFByaXZhdGVNYWNfaAogCiAjaW5jbHVkZSA8
V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tQbHVnaW5Mb2FkUG9saWN5Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpA
QCAtNDMsMTAgKzQ0LDggQEAgV0tfRVhQT1JUIFdLRGljdGlvbmFyeVJlZiBXS0NvbnRleHRDb3B5
UAogdHlwZWRlZiB2b2lkICheV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnNCbG9j
aykoV0tBcnJheVJlZiwgV0tFcnJvclJlZik7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXRJ
bmZvRm9ySW5zdGFsbGVkUGx1Z0lucyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0R2V0
SW5mb0Zvckluc3RhbGxlZFBsdWdJbnNCbG9jayBibG9jayk7CiAKLVdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKLQotLy8gVGhlIHRp
bWUgaGVyZSBpcyByZWxhdGl2ZSB0byB0aGUgVW5peCBlcG9jaC4KLVdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQs
IGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7CitXS19FWFBPUlQgdm9pZCBXS0Nv
bnRleHRSZXNldEhTVFNIb3N0cyhXS0NvbnRleHRSZWYgY29udGV4dCkgV0tfQ19BUElfREVQUkVD
QVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRh
dGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3
MCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UmVnaXN0
ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdS
ZWYgc2NoZW1lKTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFVucmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9X
S0NvbnRleHRQcml2YXRlTWFjLm1tCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDE0ICsxMDEsMTIgQEAgdm9pZCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVk
UGx1Z0lucwogI2VuZGlmCiB9CiAKLXZvaWQgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHMoV0tDb250
ZXh0UmVmIGNvbnRleHQpCit2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJl
ZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnJlc2V0SFNUU0hvc3Rz
KCk7CiB9CiAKLXZvaWQgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShXS0Nv
bnRleHRSZWYgY29udGV4dCwgZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKQordm9p
ZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKFdLQ29udGV4dFJlZiwgZG91
YmxlKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+cmVzZXRIU1RTSG9z
dHNBZGRlZEFmdGVyRGF0ZShzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7CiB9CiAKIHZvaWQg
V0tDb250ZXh0UmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaAkocmV2aXNpb24gMjYzMDQyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3
ICs2OCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXNXZWJQcm9jZXNzQ2FjaGUgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09M
IHBhZ2VDYWNoZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4w
KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPWlzSklURW5hYmxlZCkgQk9PTCBKSVRF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHksIHNldHRlcj1zZXRIU1RTU3RvcmFnZURp
cmVjdG9yeTopIE5TVVJMICpoc3RzU3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE1KSwgaW9zKDEzLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwg
Y29weSwgc2V0dGVyPXNldEhTVFNTdG9yYWdlRGlyZWN0b3J5OikgTlNVUkwgKmhzdHNTdG9yYWdl
RGlyZWN0b3J5IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5IiwgbWFjb3MoMTAuMTUs
IFdLX01BQ19UQkEpLCBpb3MoMTMuMCwgV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBjb25maWd1cmVKU0NGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3Mo
MTAuMTMpLCBpb3MoMTEuCiBAcHJvcGVydHkgKG5vbmF0b21pYykgTlNVSW50ZWdlciB0ZXN0U3Bl
ZWRNdWx0aXBsaWVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzdXBwcmVzc2VzQ29ubmVjdGlv
blRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbG93
c1NlcnZlclByZWNvbm5lY3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwgc2V0
dGVyPXNldEhTVFNTdG9yYWdlRGlyZWN0b3J5OikgTlNVUkwgKmhzdHNTdG9yYWdlRGlyZWN0b3J5
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNVUkwgKmFsdGVybmF0aXZl
U2VydmljZXNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI2MzA0MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxOSBAQCAtICh2b2lkKXNldE1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3Rvcnk6KE5TCiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkodXJsLnBhdGgpOwogfQogCistIChOU1VSTCAqKWhzdHNTdG9yYWdlRGlyZWN0b3J5Cit7
CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPmhzdHNT
dG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKK30KKworLSAodm9pZClzZXRIU1RT
U3RvcmFnZURpcmVjdG9yeTooTlNVUkwgKil1cmwKK3sKKyAgICBpZiAoIV9jb25maWd1cmF0aW9u
LT5pc1BlcnNpc3RlbnQoKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkNhbm5vdCBzZXQgbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSBvbiBhIG5vbi1wZXJzaXN0ZW50IF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LiJdOworICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0
SFNUU1N0b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOworfQorCiAtIChOU1VSTCAqKWFsdGVybmF0
aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5CiB7CiAgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPmFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkoKSBp
c0RpcmVjdG9yeTpZRVNdOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyNjMwNDIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC03NDYsMTggKzc0Niw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0
ZXJOb3RpZmljYXQKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJl
bW92ZU9ic2VydmVyOm1fYWN0aXZhdGlvbk9ic2VydmVyLmdldCgpXTsKIH0KIAotc3RhdGljIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgc3Rh
dGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbjsKLSAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IG9uY2U7Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKLSAgICAgICAgTlNTdHJp
bmcgKmlkZW50aWZpZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALlByaXZhdGVC
cm93c2luZyIsIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl1dOwotICAg
ICAgICBzZXNzaW9uID0gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKChfX2JyaWRnZSBDRlN0
cmluZ1JlZilpZGVudGlmaWVyKTsKLSAgICB9KTsKLQotICAgIHJldHVybiBzZXNzaW9uOwotfQot
CiBib29sIFdlYlByb2Nlc3NQb29sOjppc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBVUkwoVVJM
KCksIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKTsKQEAgLTc2NSwxOSArNzUzLDYgQEAgYm9vbCBX
ZWJQcm9jZXNzUG9vbDo6aXNVUkxLbm93bkhTVFNIb3N0KAogICAgIHJldHVybiBfQ0ZOZXR3b3Jr
SXNLbm93bkhTVFNIb3N0V2l0aFNlc3Npb24odXJsLmdldCgpLCBudWxscHRyKTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRIU1RTSG9zdHMoKQotewotICAgIF9DRk5ldHdvcmtSZXNl
dEhTVFNIb3N0c1dpdGhTZXNzaW9uKG51bGxwdHIpOwotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNI
b3N0c1dpdGhTZXNzaW9uKHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7Ci19Ci0KLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoZG91YmxlIHN0YXJ0RGF0
ZUludGVydmFsU2luY2UxOTcwKQotewotICAgIE5TRGF0ZSAqc3RhcnREYXRlID0gW05TRGF0ZSBk
YXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MF07
Ci0gICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKG51bGxwdHIsIChfX2JyaWRn
ZSBDRkRhdGVSZWYpc3RhcnREYXRlKTsKLSAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5j
ZURhdGUocHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVmKXN0YXJ0
RGF0ZSk7Ci19Ci0KICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRP
V1NFUlZFUl9CTE9DS0lORykKIE9wdGlvbmFsPHVuc2lnbmVkPiBXZWJQcm9jZXNzUG9vbDo6bm9t
aW5hbEZyYW1lc1BlclNlY29uZEZvckRpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEKQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI2MzA0MikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNiArMjMxLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZXNvbHZlRGlyZWN0b3JpZQogICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0
ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnko
KSkpOwogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5p
c0VtcHR5KCkgJiYgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9y
eSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hl
U3RvcmFnZURpcmVjdG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1
cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0
aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi0+aHN0c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeShyZXNvbHZlUGF0aEZv
clNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgp
KSk7CiAKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIGZvciBmaWxlIHBhdGhzLgogICAgIGlm
ICghbV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkgewpAQCAt
MjI0MSw2ICsyMjQzLDExIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRh
U3QKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShuZXR3b3Jr
Q2FjaGVEaXJlY3RvcnksIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAK
KyAgICBhdXRvIGhzdHNTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRIU1RTU3RvcmFnZURpcmVj
dG9yeSgpOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoc3RzU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHko
KSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KGhzdHNTdG9yYWdlRGlyZWN0b3J5LCBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CisKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBmYWxzZTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUgPSBmYWxzZTsKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1
dENvb2tpZXM7CkBAIC0yMjgyLDYgKzIyODksOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyBXZWJzaXRlRGF0YVN0CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbExvYWRzQmxv
Y2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgPSBtX2NvbmZpZ3Vy
YXRpb24tPmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRl
c3RpbmcoKTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0
b3J5ID0gV1RGTW92ZShuZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOwogICAgIG5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3Zl
KG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgbmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShoc3RzU3RvcmFnZURp
cmVjdG9yeSk7CisgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmRhdGFDb25uZWN0aW9uU2Vy
dmljZVR5cGUgPSBtX2NvbmZpZ3VyYXRpb24tPmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKTsK
ICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVu
YWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPmZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVk
KCk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
VmFsaWRhdGlvbkVuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPm5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI2MzA0
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDYgKzIyNCw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBTdHJpbmcmIHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7
IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29s
dmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7IH0K
KyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSFNUU1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+aHN0c1N0b3JhZ2VEaXJlY3RvcnkoKTsg
fQogCiAgICAgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UmIGRldmljZUlkSGFzaFNhbHRTdG9yYWdl
KCkgeyByZXR1cm4gbV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5nZXQoKTsgfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyNjMwNDIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDcgQEAgUmVmPFdl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaQogICAgIGNvcHktPm1faW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5Owog
ICAgIGNvcHktPm1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHRoaXMtPm1f
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKICAgICBjb3B5LT5tX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLSNpZiBV
U0UoR0xJQikKICAgICBjb3B5LT5tX2hzdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9oc3Rz
U3RvcmFnZURpcmVjdG9yeTsKLSNlbmRpZgogICAgIGNvcHktPm1fbG9jYWxTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9tZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Owog
ICAgIGNvcHktPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSA9IHRoaXMtPm1fYWx0ZXJu
YXRpdmVTZXJ2aWNlc0RpcmVjdG9yeTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaAkocmV2aXNpb24gMjYzMDQyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNjYsMTAgKzY2LDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgd2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5OyB9CiAgICAgdm9pZCBzZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcmJiBkaXJl
Y3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsg
fQotI2lmIFVTRShHTElCKSAvLyBBY2NvcmRpbmcgdG8gcjI0NTA3NSB0aGlzIHdpbGwgZXZlbnR1
YWxseSBtb3ZlIGhlcmUuCisKICAgICBjb25zdCBTdHJpbmcmIGhzdHNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gbV9oc3RzU3RvcmFnZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0
SFNUU1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1faHN0c1N0b3JhZ2VE
aXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KLSNlbmRpZgorCiAgICAgY29uc3QgU3Ry
aW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYm
IGRpcmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5
KTsgfQogCkBAIC0xNzQsOCArMTc0LDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotI2lm
IFVTRShHTElCKQogICAgIFN0cmluZyBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5OworI2lmIFVTRShH
TElCKQogICAgIGJvb2wgbV9uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVk
IHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29sIG1fbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxp
ZGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401926</attachid>
            <date>2020-06-15 13:04:23 -0700</date>
            <delta_ts>2020-07-02 20:34:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213048-20200615130422.patch</filename>
            <type>text/plain</type>
            <size>37826</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjMwNTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA2LTE1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisK
IDIwMjAtMDYtMTUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGZvciBidWlsZCB3aXRob3V0IG1hY2ggZXhjZXB0
aW9ucy4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCShyZXZpc2lvbiAyNjMwNTQpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEzLDYgKzQxMywx
MyBAQAogI2RlZmluZSBIQVZFX0JST0tFTl9ET1dOTE9BRF9SRVNVTUVfVU5MSU5LIDEKICNlbmRp
ZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE2MDApIFwKKyAgICB8fCAoKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApIFwK
KyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSA3MDAwMCkgXAorICAgIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkKKyNkZWZpbmUgSEFWRV9IU1RTX1NUT1JBR0Ug
MQorI2VuZGlmCisKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkKICNkZWZpbmUgSEFWRV9DRk5FVFdP
UktfTUVUUklDU19BUElTX1Y0IDEKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjMwNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDYtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uIFNQSSBmb3IgSFNUUyBzdG9yYWdlIHRvIHJlcGxhY2UgX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6
CisKIDIwMjAtMDYtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZS1lbmFibGUgZG93bmxvYWQgcmVzdW1lIHRlc3RzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjYz
MDU0KQorKysgU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwNyw3ICs0MDcsNyBAQCBXVEZfRVhURVJOX0NfQkVHSU4KIENGRGF0
YVJlZiBfQ0ZOZXR3b3JrQ29weUFUU0NvbnRleHQodm9pZCk7CiBCb29sZWFuIF9DRk5ldHdvcmtT
ZXRBVFNDb250ZXh0KENGRGF0YVJlZik7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgIUhBVkUoSFNUU19TVE9SQUdFKQogZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIF9rQ0ZOZXR3b3JrSFNUU1ByZWxvYWRlZDsKIENGRGljdGlvbmFyeVJlZiBfQ0ZOZXR3b3Jr
Q29weUhTVFNQb2xpY2llcyhDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKIHZvaWQgX0NGTmV0d29y
a1Jlc2V0SFNUUyhDRlVSTFJlZiwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CkBAIC00NTgsOSAr
NDU4LDIyIEBAIFdURl9FWFRFUk5fQ19FTkQKIC0gKHZvaWQpX3NldE1JTUVUeXBlOihOU1N0cmlu
ZyAqKXR5cGU7CiBAZW5kCiAKKyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKK0BpbnRlcmZhY2UgX05T
SFNUU1N0b3JhZ2UgOiBOU09iamVjdAorLShpbnN0YW5jZXR5cGUpaW5pdFBlcnNpc3RlbnRTdG9y
ZVdpdGhVUkw6KG51bGxhYmxlIE5TVVJMKilwYXRoOworLShCT09MKXNob3VsZFByb21vdGVIb3N0
VG9IVFRQUzooTlNTdHJpbmcgKilob3N0OworLShOU0FycmF5PE5TU3RyaW5nICo+ICopbm9uUHJl
bG9hZGVkSG9zdHM7CistKHZvaWQpcmVzZXRIU1RTRm9ySG9zdDooTlNTdHJpbmcgKilob3N0Owor
LSh2b2lkKXJlc2V0SFNUU0hvc3RzU2luY2VEYXRlOihOU0RhdGUgKilkYXRlOworQGVuZAorI2Vu
ZGlmCisKIEBpbnRlcmZhY2UgTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAoKQogLy8gRklYTUU6
IFJlbW92ZSB0aGlzIG9uY2UgcmRhcjovL3Byb2JsZW0vNDA2NTAyNDQgaXMgaW4gYSBidWlsZC4K
IEBwcm9wZXJ0eSAoY29weSkgTlNEaWN0aW9uYXJ5ICpfc29ja2V0U3RyZWFtUHJvcGVydGllczsK
KyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIHJldGFpbikgX05T
SFNUU1N0b3JhZ2UgKl9oc3RzU3RvcmFnZTsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIE5T
VVJMU2Vzc2lvblRhc2sgKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjMwNTQpCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDIw
LTA2LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMg
c3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFn
ZURpcmVjdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyB1c2VzIENGTmV0d29yayBTUEkgaW50cm9kdWNlZCBpbiByZGFyOi8vcHJvYmxlbS81
MDEwOTYzMSB0byBhbGxvdyBIU1RTIHN0b3JhZ2UgcGVyIE5TVVJMU2Vzc2lvbi4KKyAgICAgICAg
VG8gYmUgY29tcGxldGUsIEkgYWxzbyBkZXByZWNhdGVkIG91ciBVSSBwcm9jZXNzIEhTVFMgc3Rh
dGUgcmVtb3ZhbCBhdHRlbXB0IFNQSXMsIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzIGFuZAorICAg
ICAgICBXS0NvbnRleHRSZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlLCB3aGljaCBoYWQgdGhl
aXIgbGFzdCB1c2UgcmVtb3ZlZCBpbiByZGFyOi8vcHJvYmxlbS82NDIyMDgzOC4KKworICAgICAg
ICBJIG1hbnVhbGx5IHZlcmlmaWVkIHRoYXQgdGhpcyBuZXcgU1BJIHB1dHMgSFNUUyBkYXRhIGlu
IHRoZSBzcGVjaWZpZWQgbG9jYXRpb24sIGFuZCBJIGFsc28gdmVyaWZpZWQgdGhhdCBIU1RTCisg
ICAgICAgIHN0YXRlIHF1ZXJ5aW5nIGFuZCByZW1vdmFsIHdvcmtzIHdpdGggdGhlIG5ldyBDRk5l
dHdvcmsgU1BJIGFzIGl0IGRpZCB3aXRoIHRoZSBvbGQgb25lLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRo
V2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6aG9zdE5hbWVzV2l0aEhTVFNDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmhzdHNTdG9yYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aG9zdE5hbWVzV2l0aEhTVFNDYWNoZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0
TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5hbWVzV2l0aEhTVFND
YWNoZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQ
cml2YXRlTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2
YXRlTWFjLm1tOgorICAgICAgICAoV0tDb250ZXh0UmVzZXRIU1RTSG9zdHMpOgorICAgICAgICAo
V0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gaHN0
c1N0b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gc2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnByaXZhdGVC
cm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cmVzZXRIU1RTSG9zdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVkSFNUU1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaDoKKwogMjAyMC0wNi0xNSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBTaWduYWwgaGFuZGxlcnMgc2hvdWxkIGhhdmUgYSB0d28gcGhhc2Ug
aW5zdGFsbGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2MzA1NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTM0LDEw
ICsxNTM0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogICAg
IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKLSAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCi0gICAgICAgICAgICBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRo
SFNUU0NhY2hlKTsKLSAgICB9CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQorICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1f
d2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUoc2Vzc2lvbklEKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBA
IC0xNTgzLDEwICsxNTgxLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0
YShQQQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVz
LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAg
ICAgICAgIGNsZWFySFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG1vZGlmaWVkU2lu
Y2UpOwotICAgIH0KKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAgIGNsZWFySFNUU0NhY2hlKHNlc3Npb25JRCwgbW9k
aWZpZWRTaW5jZSk7CiAjZW5kaWYKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcykpIHsKQEAgLTE2ODgsMTAgKzE2ODQsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvCiAgICAgfQogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShTT1VQKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAg
IGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcygqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBIU1RT
Q2FjaGVIb3N0TmFtZXMpOwotICAgIH0KKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAgIGRlbGV0ZUhTVFNDYWNoZUZv
ckhvc3ROYW1lcyhzZXNzaW9uSUQsIEhTVFNDYWNoZUhvc3ROYW1lcyk7CiAjZW5kaWYKIAogI2lm
IEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCkBAIC0xODU5LDE1ICsxODUzLDEz
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2UKICAgICBWZWN0b3I8
U3RyaW5nPiBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlOwogI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBVU0UoU09VUCkKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkhTVFNDYWNoZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgICAgIGdldEhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgaG9zdE5hbWVzV2l0aEhT
VFNDYWNoZSk7Ci0gICAgICAgICAgICBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlID0gZmlsdGVy
Rm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVE
YXRhRm9yLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKKyAgICAgICAgaG9zdE5hbWVzV2l0aEhT
VFNDYWNoZSA9IHRoaXMtPmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKKyAgICAg
ICAgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlu
cyhkb21haW5zVG9EZWxldGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgaG9zdE5hbWVzV2l0
aEhTVFNDYWNoZSk7CiAKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdCA6IGhvc3Ru
YW1lc1dpdGhIU1RTVG9EZWxldGUpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX2RvbWFpbnMuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9z
dChob3N0KSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhI
U1RTVG9EZWxldGUpCisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5h
ZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsKIAot
ICAgICAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKCpuZXR3b3JrU3RvcmFnZVNl
c3Npb24sIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpOwotICAgICAgICB9CisgICAgICAgIGRl
bGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhzZXNzaW9uSUQsIGhvc3RuYW1lc1dpdGhIU1RTVG9E
ZWxldGUpOwogICAgIH0KICNlbmRpZgogCkBAIC0yMDQ0LDE4ICsyMDM2LDE2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlZ2lzdHJhYmxlRG9tYWluc1cKICAgICAgICAgfSk7CiAgICAgfSkpOwog
ICAgIAotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1f
d2Vic2l0ZURhdGE7CisgICAgYXV0byYgd2Vic2l0ZURhdGEgPSBjYWxsYmFja0FnZ3JlZ2F0b3It
Pm1fd2Vic2l0ZURhdGE7CiAgICAgCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0
b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMod2Vic2l0ZURhdGFT
dG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhD
b29raWVzKTsKICAgICB9CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQot
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0Nh
Y2hlKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgd2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRo
SFNUU0NhY2hlKTsKLSAgICB9CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQorICAgICAgICB3ZWJzaXRlRGF0YS5ob3N0TmFtZXNX
aXRoSFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOwogI2VuZGlm
CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNy
ZWRlbnRpYWxzKSkgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjYzMDU0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsOSArMTkzLDkg
QEAgcHVibGljOgogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9uQXVk
aXREYXRhKCkgY29uc3Q7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVAp
Ci0gICAgdm9pZCBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYpOwotICAgIHZvaWQgZGVsZXRlSFNUU0NhY2hl
Rm9ySG9zdE5hbWVzKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik7Ci0gICAgdm9pZCBjbGVhckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsKKyAgICBIYXNoU2V0PFN0cmlu
Zz4gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCkgY29uc3Q7CisgICAgdm9p
ZCBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik7CisgICAgdm9pZCBjbGVhckhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCwgV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSk7CiAjZW5kaWYKIAogICAgIHZvaWQgZmluZFBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI2MzA1NCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw4IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM6OmUKICAgICBlbmNvZGVyIDw8IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IGh0dHAzRW5hYmxlZDsKICNlbmRpZgorICAg
IGVuY29kZXIgPDwgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgZW5jb2RlciA8PCBoc3RzU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICNpZiBVU0UoU09VUCkKICAgICBlbmNvZGVy
IDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBlbmNvZGVyIDw8IGNvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlVHlwZTsKQEAgLTE1Myw2ICsxNTUsMTYgQEAgT3B0aW9uYWw8TmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcgogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
I2VuZGlmCiAKKyAgICBPcHRpb25hbDxTdHJpbmc+IGhzdHNTdG9yYWdlRGlyZWN0b3J5OworICAg
IGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgaWYgKCFoc3RzU3RvcmFnZURp
cmVjdG9yeSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4gaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGU7CisgICAgZGVjb2RlciA+PiBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
KyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAogI2lmIFVTRShTT1VQKQogICAgIE9wdGlvbmFsPFN0
cmluZz4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGRlY29kZXIgPj4gY29va2ll
UGVyc2lzdGVudFN0b3JhZ2VQYXRoOwpAQCAtMjc1LDYgKzI4Nyw4IEBAIE9wdGlvbmFsPE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXIKICAgICAgICAgLCBXVEZNb3ZlKCphbHRlcm5hdGl2
ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgICwgV1RGTW92ZSgqaHR0
cDNFbmFibGVkKQogI2VuZGlmCisgICAgICAgICwgV1RGTW92ZSgqaHN0c1N0b3JhZ2VEaXJlY3Rv
cnkpCisgICAgICAgICwgV1RGTW92ZSgqaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpCiAjaWYgVVNFKFNPVVApCiAgICAgICAgICwgV1RGTW92ZSgqY29va2llUGVyc2lzdGVudFN0
b3JhZ2VQYXRoKQogICAgICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlw
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI2MzA1NCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBzdHJ1Y3QgTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBib29sIGh0
dHAzRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKKyAgICBTdHJpbmcgaHN0c1N0b3JhZ2VEaXJl
Y3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhzdHNTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogI2lmIFVTRShTT1VQKQogICAgIFN0cmluZyBjb29raWVQZXJzaXN0
ZW50U3RvcmFnZVBhdGg7CiAgICAgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSBjb29r
aWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUgeyBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBl
OjpUZXh0IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjMwNTQpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEzNCw2ICsxMzQsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBO
ZXR3b3JrUHJvY2Vzczo6c291CiAjZW5kaWYKIH0KIAorI2lmICFIQVZFKEhTVFNfU1RPUkFHRSkK
IHN0YXRpYyB2b2lkIGZpbHRlclByZWxvYWRIU1RTRW50cnkoY29uc3Qgdm9pZCoga2V5LCBjb25z
dCB2b2lkKiB2YWx1ZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChjb250
ZXh0KTsKQEAgLTE1MiwyNyArMTUzLDUzIEBAIHN0YXRpYyB2b2lkIGZpbHRlclByZWxvYWRIU1RT
RW50cnkoY29uc3QKICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodmFsLCBfa0NGTmV0d29y
a0hTVFNQcmVsb2FkZWQpICE9IGtDRkJvb2xlYW5UcnVlKQogICAgICAgICBob3N0bmFtZXMtPmFk
ZCgoQ0ZTdHJpbmdSZWYpa2V5KTsKIH0KKyNlbmRpZgogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpn
ZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0TmFtZXMpCitIYXNoU2V0PFN0cmluZz4gTmV0
d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSBjb25zdAogewotICAgIGlmIChhdXRvIEhTVFNQb2xpY2llcyA9IGFkb3B0Q0YoX0NGTmV0
d29ya0NvcHlIU1RTUG9saWNpZXMoc2Vzc2lvbi5wbGF0Zm9ybVNlc3Npb24oKSkpKQotICAgICAg
ICBDRkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKEhTVFNQb2xpY2llcy5nZXQoKSwgZmlsdGVyUHJl
bG9hZEhTVFNFbnRyeSwgJmhvc3ROYW1lcyk7CisgICAgSGFzaFNldDxTdHJpbmc+IGhvc3ROYW1l
czsKKyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24g
PSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hKj4odGhpcy0+bmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkpIHsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqaG9zdCBpbiBuZXR3b3JrU2Vz
c2lvbi0+aHN0c1N0b3JhZ2UoKS5ub25QcmVsb2FkZWRIb3N0cykKKyAgICAgICAgICAgIGhvc3RO
YW1lcy5hZGQoaG9zdCk7CisgICAgfQorI2Vsc2UKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8gSFNUU1BvbGljaWVz
ID0gYWRvcHRDRihfQ0ZOZXR3b3JrQ29weUhTVFNQb2xpY2llcyhzZXNzaW9uLT5wbGF0Zm9ybVNl
c3Npb24oKSkpKQorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QXBwbHlGdW5jdGlvbihIU1RTUG9s
aWNpZXMuZ2V0KCksIGZpbHRlclByZWxvYWRIU1RTRW50cnksICZob3N0TmFtZXMpOworICAgIH0K
KyNlbmRpZgorICAgIHJldHVybiBob3N0TmFtZXM7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdE5hbWVzKQogewotICAgIGZvciAoYXV0
byYgaG9zdE5hbWUgOiBob3N0TmFtZXMpIHsKLSAgICAgICAgYXV0byB1cmwgPSBVUkwoeyB9LCBt
YWtlU3RyaW5nKCJodHRwczovLyIsIGhvc3ROYW1lKSk7Ci0gICAgICAgIF9DRk5ldHdvcmtSZXNl
dEhTVFModXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIHNlc3Npb24ucGxhdGZvcm1TZXNzaW9uKCkp
OworI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPih0aGlzLT5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSkgeworICAgICAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogaG9zdE5hbWVzKQor
ICAgICAgICAgICAgW25ldHdvcmtTZXNzaW9uLT5oc3RzU3RvcmFnZSgpIHJlc2V0SFNUU0Zvckhv
c3Q6aG9zdE5hbWVdOwogICAgIH0KKyNlbHNlCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIGZvciAoYXV0byYgaG9zdE5hbWUgOiBo
b3N0TmFtZXMpIHsKKyAgICAgICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgbWFrZVN0cmluZygi
aHR0cHM6Ly8iLCBob3N0TmFtZSkpOworICAgICAgICAgICAgX0NGTmV0d29ya1Jlc2V0SFNUUyh1
cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2Vzc2lvbi0+cGxhdGZvcm1TZXNzaW9uKCkpOworICAg
ICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFySFNU
U0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgV2FsbFRpbWUg
bW9kaWZpZWRTaW5jZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKIHsKICAgICBOU1Rp
bWVJbnRlcnZhbCB0aW1lSW50ZXJ2YWwgPSBtb2RpZmllZFNpbmNlLnNlY29uZHNTaW5jZUVwb2No
KCkuc2Vjb25kcygpOwogICAgIE5TRGF0ZSAqZGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50
ZXJ2YWxTaW5jZTE5NzA6dGltZUludGVydmFsXTsKLQotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNI
b3N0c1NpbmNlRGF0ZShzZXNzaW9uLnBsYXRmb3JtU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRl
UmVmKWRhdGUpOworI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPih0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSkKKyAgICAgICAgW25ldHdvcmtTZXNzaW9uLT5oc3RzU3RvcmFn
ZSgpIHJlc2V0SFNUU0hvc3RzU2luY2VEYXRlOmRhdGVdOworI2Vsc2UKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgIF9DRk5ldHdvcmtS
ZXNldEhTVFNIb3N0c1NpbmNlRGF0ZShzZXNzaW9uLT5wbGF0Zm9ybVNlc3Npb24oKSwgKF9fYnJp
ZGdlIENGRGF0ZVJlZilkYXRlKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
bGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkocmV2aXNp
b24gMjYzMDU0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgT0JKQ19DTEFT
UyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7CiBPQkpDX0NMQVNTIE5TT3BlcmF0aW9uUXVldWU7
CiBPQkpDX0NMQVNTIFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZTsKIE9CSkNfQ0xBU1MgV0tOZXR3
b3JrU2Vzc2lvbldlYlNvY2tldERlbGVnYXRlOworT0JKQ19DTEFTUyBfTlNIU1RTU3RvcmFnZTsK
IAogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2tDb2Nv
YS5oIgpAQCAtMTA1LDYgKzEwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRhc2tTZXJ2ZXJDb25u
ZWN0aW9uU3VjY2VlZGVkKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllcik7CiAg
ICAgdm9pZCB0YXNrRmFpbGVkKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllcik7
CiAgICAgTlNVUkxDcmVkZW50aWFsICpzdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0
KGNvbnN0IFN0cmluZyYgaG9zdCwgdWludDE2X3QgcG9ydCkgY29uc3Q7CisgICAgX05TSFNUU1N0
b3JhZ2UgKmhzdHNTdG9yYWdlKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlk
YXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAyNjMwNTQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDEwIEBACiAKICNpbXBv
cnQgIkRldmljZU1hbmFnZW1lbnRTb2Z0TGluay5oIgogCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
c29mdCBsaW5rIG9uY2UgcmRhcjovL3Byb2JsZW0vNTAxMDk2MzEgaXMgaW4gYSBidWlsZCBhbmQg
Ym90cyBhcmUgdXBkYXRlZC4KK1NPRlRfTElOS19GUkFNRVdPUksoQ0ZOZXR3b3JrKQorU09GVF9M
SU5LX0NMQVNTX09QVElPTkFMKENGTmV0d29yaywgX05TSFNUU1N0b3JhZ2UpCisKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKIENGU3RyaW5nUmVmIGNvbnN0IFdlYktpdDJIVFRQUHJveHlEZWZh
dWx0c0tleSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihAIldlYktpdDJIVFRQUHJveHkiKTsK
QEAgLTEwOTIsNiArMTA5NiwxNyBAQCBOU1VSTENyZWRlbnRpYWwgKk5ldHdvcmtTZXNzaW9uQ29j
b2E6OnN1CiAgICAgcmV0dXJuIG1fc3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlcy5nZXQoa2V5
KS5nZXQoKTsKIH0KIAorX05TSFNUU1N0b3JhZ2UgKk5ldHdvcmtTZXNzaW9uQ29jb2E6OmhzdHNT
dG9yYWdlKCkgY29uc3QKK3sKKyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKKyAgICBOU1VSTFNlc3Np
b25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxT
dG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbjsKKyAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgcmVzcG9uZHNUb1NlbGVjdG9yIGNoZWNrIG9uY2UgcmRhcjovL3Byb2JsZW0vNTAxMDk2
MzEgaXMgaW4gYSBidWlsZCBhbmQgYm90cyBhcmUgdXBkYXRlZC4KKyAgICBpZiAoW2NvbmZpZ3Vy
YXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfaHN0c1N0b3JhZ2UpXSkKKyAgICAg
ICAgcmV0dXJuIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNv
bmZpZ3VyYXRpb24uX2hzdHNTdG9yYWdlOworI2VuZGlmCisgICAgcmV0dXJuIG5pbDsKK30KKwog
Y29uc3QgU3RyaW5nJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpib3VuZEludGVyZmFjZUlkZW50aWZp
ZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjsKQEAg
LTExNzMsNiArMTE4OCwxNSBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNv
Y29hCiAKICAgICBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gY29u
ZmlndXJhdGlvbkZvclNlc3Npb25JRChtX3Nlc3Npb25JRCk7CiAKKyNpZiBIQVZFKEhTVFNfU1RP
UkFHRSkKKyAgICBpZiAoISFwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5ICYmICFtX3Nl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1
bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHJlc3BvbmRzVG9TZWxlY3RvciBj
aGVjayBvbmNlIHJkYXI6Ly9wcm9ibGVtLzUwMTA5NjMxIGlzIGluIGEgYnVpbGQgYW5kIGJvdHMg
YXJlIHVwZGF0ZWQuCisgICAgICAgIGlmIChbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF9oc3RzU3RvcmFnZSldKQorICAgICAgICAgICAgY29uZmlndXJhdGlvbi5f
aHN0c1N0b3JhZ2UgPSBbW2FsbG9jX05TSFNUU1N0b3JhZ2VJbnN0YW5jZSgpIGluaXRQZXJzaXN0
ZW50U3RvcmVXaXRoVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGFyYW1ldGVycy5oc3RzU3Rv
cmFnZURpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVNdXSBhdXRvcmVsZWFzZV07CisgICAgfQorI2Vu
ZGlmCisKICNpZiBIQVZFKEFQUF9TU08pIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGNv
bmZpZ3VyYXRpb24uX3ByZXZlbnRzQXBwU1NPID0gdHJ1ZTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAJKHJldmlzaW9uIDI2MzA1NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwyMSAr
OTQsMjMgQEAgc3RhdGljIENTdHJpbmcgYnVpbGRBY2NlcHRMYW5ndWFnZXMoY29ucwogICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
OjpnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc3RvcmFnZVNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdE5hbWVzKQorSGFzaFNldDxT
dHJpbmc+IE5ldHdvcmtQcm9jZXNzOjpob3N0TmFtZXNXaXRoSFNUU0NhY2hlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgY29uc3QKIHsKLSAgICBjb25zdCBhdXRvKiBzZXNzaW9uID0gc3RhdGlj
X2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Npb24oc3RvcmFnZVNlc3Npb24u
c2Vzc2lvbklEKCkpKTsKKyAgICBIYXNoU2V0PFN0cmluZz4gaG9zdE5hbWVzOworICAgIGNvbnN0
IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICBzZXNzaW9uLT5zb3VwTmV0d29ya1Nlc3Npb24oKS5n
ZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKGhvc3ROYW1lcyk7CisgICAgcmV0dXJuIGhvc3ROYW1l
czsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVz
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBob3N0TmFtZXMpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RT
Q2FjaGVGb3JIb3N0TmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaG9zdE5hbWVzKQogewotICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNf
Y2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5z
ZXNzaW9uSUQoKSkpOworICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3
b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICBzZXNzaW9u
LT5zb3VwTmV0d29ya1Nlc3Npb24oKS5kZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoaG9zdE5h
bWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKIHsKLSAgICBjb25zdCBhdXRvKiBz
ZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Npb24o
c3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKKyAgICBjb25zdCBhdXRvKiBzZXNzaW9uID0g
c3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSk7CiAgICAgc2Vzc2lvbi0+c291cE5ldHdvcmtTZXNzaW9uKCkuY2xlYXJIU1RTQ2FjaGUobW9k
aWZpZWRTaW5jZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAkocmV2aXNpb24gMjYzMDU0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtNDIyLDggKzQyMiw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpNZXNzYWdlTmFt
ZSk7CiAKICAgICBib29sIGlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZykgY29uc3Q7Ci0gICAgdm9pZCByZXNldEhTVFNIb3N0cygpOwotICAgIHZvaWQgcmVzZXRIU1RT
SG9zdHNBZGRlZEFmdGVyRGF0ZShkb3VibGUgc3RhcnREYXRlSW50ZXJ2YWxTaW5jZTE5NzApOwog
CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVBy
b3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgdW5yZWdpc3Rl
ckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJp
bmcmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQ
cml2YXRlTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
bWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaAkocmV2aXNpb24gMjYzMDU0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXS0NvbnRleHRQcml2YXRlTWFjX2gKIAog
I2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVk
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGx1Z2luTG9hZFBvbGljeS5oPgogCiAjaWZkZWYgX19j
cGx1c3BsdXMKQEAgLTQzLDEwICs0NCw4IEBAIFdLX0VYUE9SVCBXS0RpY3Rpb25hcnlSZWYgV0tD
b250ZXh0Q29weVAKIHR5cGVkZWYgdm9pZCAoXldLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQ
bHVnSW5zQmxvY2spKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
Q29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQbHVnSW5zQmxvY2sgYmxvY2spOwogCi1XS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0cyhXS0NvbnRleHRSZWYgY29udGV4dCk7Ci0K
LS8vIFRoZSB0aW1lIGhlcmUgaXMgcmVsYXRpdmUgdG8gdGhlIFVuaXggZXBvY2guCi1XS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBkb3VibGUgc3RhcnREYXRlSW50ZXJ2YWxTaW5jZTE5NzApOworV0tfRVhQT1JU
IHZvaWQgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHMoV0tDb250ZXh0UmVmIGNvbnRleHQpIFdLX0Nf
QVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0c0Fk
ZGVkQWZ0ZXJEYXRlKFdLQ29udGV4dFJlZiBjb250ZXh0LCBkb3VibGUgc3RhcnREYXRlSW50ZXJ2
YWxTaW5jZTE5NzApIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dFJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLU3RyaW5nUmVmIHNjaGVtZSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRVbnJlZ2lzdGVy
U2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVm
IHNjaGVtZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQkocmV2aXNpb24gMjYzMDU0KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEwMSwxNCArMTAxLDEyIEBAIHZvaWQgV0tDb250ZXh0R2V0SW5mb0Zv
ckluc3RhbGxlZFBsdWdJbnMKICNlbmRpZgogfQogCi12b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hv
c3RzKFdLQ29udGV4dFJlZiBjb250ZXh0KQordm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0cyhX
S0NvbnRleHRSZWYpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGNvbnRleHQpLT5yZXNl
dEhTVFNIb3N0cygpOwogfQogCi12b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRl
ckRhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNl
MTk3MCkKK3ZvaWQgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShXS0NvbnRl
eHRSZWYsIGRvdWJsZSkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnJl
c2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoc3RhcnREYXRlSW50ZXJ2YWxTaW5jZTE5NzApOwog
fQogCiB2b2lkIFdLQ29udGV4dFJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIHNjaGVtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2MzA1NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNjgsNyArNjgsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3Mo
OC4wCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB1c2VzV2ViUHJvY2Vzc0NhY2hlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBwYWdlQ2FjaGVFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQp
LCBpb3MoMTIuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc0pJVEVuYWJsZWQp
IEJPT0wgSklURW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIu
MikpOwotQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5LCBzZXR0ZXI9c2V0SFNU
U1N0b3JhZ2VEaXJlY3Rvcnk6KSBOU1VSTCAqaHN0c1N0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
bnVsbGFibGUsIGNvcHksIHNldHRlcj1zZXRIU1RTU3RvcmFnZURpcmVjdG9yeTopIE5TVVJMICpo
c3RzU3RvcmFnZURpcmVjdG9yeSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeSIsIG1h
Y29zKDEwLjE1LCBXS19NQUNfVEJBKSwgaW9zKDEzLjAsIFdLX0lPU19UQkEpKTsKIAogQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgY29uZmlndXJlSlNDRm9yVGVzdGluZyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYzMDU0KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLgogQHByb3BlcnR5IChub25hdG9taWMpIE5TVUludGVn
ZXIgdGVzdFNwZWVkTXVsdGlwbGllciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc3VwcHJlc3Nl
c0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUs
IGNvcHksIHNldHRlcj1zZXRIU1RTU3RvcmFnZURpcmVjdG9yeTopIE5TVVJMICpoc3RzU3RvcmFn
ZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TVVJMICph
bHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyNjMwNTQpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTkgQEAgLSAodm9pZClzZXRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5OihOUwogICAgIF9jb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAorLSAoTlNVUkwgKiloc3RzU3RvcmFnZURp
cmVjdG9yeQoreworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0
aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107Cit9CisKKy0gKHZv
aWQpc2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnk6KE5TVVJMICopdXJsCit7CisgICAgaWYgKCFfY29u
ZmlndXJhdGlvbi0+aXNQZXJzaXN0ZW50KCkpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpO
U0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJDYW5ub3Qgc2V0IG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3Rvcnkgb24gYSBub24tcGVyc2lzdGVudCBfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi4iXTsKKyAgICBjaGVja1VSTEFyZ3VtZW50KHVybCk7CisgICAgX2NvbmZpZ3Vy
YXRpb24tPnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KHVybC5wYXRoKTsKK30KKwogLSAoTlNVUkwg
KilhbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeQogewogICAgIHJldHVybiBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0aW9uLT5hbHRlcm5hdGl2ZVNlcnZpY2VzRGly
ZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjYzMDU0
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzQ2LDE4ICs3NDYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1bnJlZ2lzdGVyTm90aWZpY2F0CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2FjdGl2YXRpb25PYnNlcnZlci5nZXQoKV07CiB9CiAK
LXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQot
ewotICAgIHN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb247Ci0gICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57Ci0gICAg
ICAgIE5TU3RyaW5nICppZGVudGlmaWVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
QC5Qcml2YXRlQnJvd3NpbmciLCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZp
ZXJdXTsKLSAgICAgICAgc2Vzc2lvbiA9IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbigoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpaWRlbnRpZmllcik7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gc2Vz
c2lvbjsKLX0KLQogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aXNVUkxLbm93bkhTVFNIb3N0KGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdAogewogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJs
ID0gVVJMKFVSTCgpLCB1cmxTdHJpbmcpLmNyZWF0ZUNGVVJMKCk7CkBAIC03NjUsMTkgKzc1Myw2
IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzVVJMS25vd25IU1RTSG9zdCgKICAgICByZXR1cm4g
X0NGTmV0d29ya0lzS25vd25IU1RTSG9zdFdpdGhTZXNzaW9uKHVybC5nZXQoKSwgbnVsbHB0cik7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc2V0SFNUU0hvc3RzKCkKLXsKLSAgICBfQ0ZO
ZXR3b3JrUmVzZXRIU1RTSG9zdHNXaXRoU2Vzc2lvbihudWxscHRyKTsKLSAgICBfQ0ZOZXR3b3Jr
UmVzZXRIU1RTSG9zdHNXaXRoU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpOwotfQot
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKGRvdWJs
ZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCkKLXsKLSAgICBOU0RhdGUgKnN0YXJ0RGF0ZSA9
IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6c3RhcnREYXRlSW50ZXJ2YWxT
aW5jZTE5NzBdOwotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1NpbmNlRGF0ZShudWxscHRy
LCAoX19icmlkZ2UgQ0ZEYXRlUmVmKXN0YXJ0RGF0ZSk7Ci0gICAgX0NGTmV0d29ya1Jlc2V0SFNU
U0hvc3RzU2luY2VEYXRlKHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgKF9fYnJpZGdlIENGRGF0
ZVJlZilzdGFydERhdGUpOwotfQotCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJP
Q0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiBPcHRpb25hbDx1bnNpZ25lZD4gV2ViUHJvY2Vz
c1Bvb2w6Om5vbWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAy
NjMwNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDYgKzIzMSw4IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWUKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KHJlc29sdmVQYXRoRm9y
U2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGly
ZWN0b3J5KCkuaXNFbXB0eSgpICYmIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9u
KG1fY29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1f
Y29uZmlndXJhdGlvbi0+aHN0c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkgJiYgbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24tPmhzdHNTdG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAg
ICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkocmVz
b2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+aHN0c1N0b3JhZ2VE
aXJlY3RvcnkoKSkpOwogCiAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBmb3IgZmlsZSBwYXRo
cy4KICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+Y29va2llU3RvcmFnZUZpbGUoKS5pc0VtcHR5
KCkpIHsKQEAgLTIyNDEsNiArMjI0MywxMSBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBX
ZWJzaXRlRGF0YVN0CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQog
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkobmV0d29ya0NhY2hlRGlyZWN0b3J5LCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCisgICAgYXV0byBoc3RzU3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVkSFNUU1N0
b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaHN0c1N0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9y
eS5pc0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShoc3RzU3RvcmFnZURpcmVjdG9yeSwgaHN0c1N0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOworCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CiAgICAgYXV0byBmaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlOjpBbGxCdXRDb29raWVzOwpAQCAtMjI4Miw2ICsyMjg5LDggQEAgV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdAogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5h
bGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nID0g
bV9jb25maWd1cmF0aW9uLT5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmlj
dGlvbnNGb3JUZXN0aW5nKCk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdvcmtD
YWNoZURpcmVjdG9yeSA9IFdURk1vdmUobmV0d29ya0NhY2hlRGlyZWN0b3J5KTsKICAgICBuZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
ID0gV1RGTW92ZShuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIG5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5oc3RzU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoaHN0
c1N0b3JhZ2VEaXJlY3RvcnkpOworICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5oc3RzU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoaHN0c1N0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5kYXRhQ29u
bmVjdGlvblNlcnZpY2VUeXBlID0gbV9jb25maWd1cmF0aW9uLT5kYXRhQ29ubmVjdGlvblNlcnZp
Y2VUeXBlKCk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmZhc3RTZXJ2ZXJUcnVzdEV2
YWx1YXRpb25FbmFibGVkID0gbV9jb25maWd1cmF0aW9uLT5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0
aW9uRW5hYmxlZCgpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gbV9jb25maWd1cmF0aW9uLT5uZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZp
c2lvbiAyNjMwNTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw2ICsyMjQsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiByZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEhTVFNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmhzdHNTdG9yYWdlRGly
ZWN0b3J5KCk7IH0KIAogICAgIERldmljZUlkSGFzaFNhbHRTdG9yYWdlJiBkZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZSgpIHsgcmV0dXJuIG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuZ2V0KCk7IH0K
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkocmV2aXNp
b24gMjYzMDU0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw5ICs2Nyw3
IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2kKICAgICBjb3B5LT5t
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeTsKICAgICBjb3B5LT5tX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnkg
PSB0aGlzLT5tX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgY29weS0+
bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnk7Ci0jaWYgVVNFKEdMSUIpCiAgICAgY29weS0+bV9oc3RzU3RvcmFnZURpcmVjdG9yeSA9IHRo
aXMtPm1faHN0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0jZW5kaWYKICAgICBjb3B5LT5tX2xvY2FsU3Rv
cmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHkt
Pm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeTsKICAgICBjb3B5LT5tX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkgPSB0aGlz
LT5tX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2MzA1NCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJp
bmcmIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV93ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3Ry
aW5nJiYgZGlyZWN0b3J5KSB7IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRp
cmVjdG9yeSk7IH0KLSNpZiBVU0UoR0xJQikgLy8gQWNjb3JkaW5nIHRvIHIyNDUwNzUgdGhpcyB3
aWxsIGV2ZW50dWFsbHkgbW92ZSBoZXJlLgorCiAgICAgY29uc3QgU3RyaW5nJiBoc3RzU3RvcmFn
ZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faHN0c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KICAg
ICB2b2lkIHNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2hz
dHNTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9Ci0jZW5kaWYKKwogICAg
IGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9s
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldExvY2FsU3RvcmFnZURpcmVjdG9y
eShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3Zl
KGRpcmVjdG9yeSk7IH0KIApAQCAtMTc0LDggKzE3NCw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKICAgICBTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeTsKLSNpZiBVU0UoR0xJQikKICAgICBTdHJpbmcgbV9oc3RzU3RvcmFnZURpcmVjdG9yeTsK
KyNpZiBVU0UoR0xJQikKICAgICBib29sIG1fbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0
aW9uRW5hYmxlZCB7IHRydWUgfTsKICNlbHNlCiAgICAgYm9vbCBtX25ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403435</attachid>
            <date>2020-07-02 20:34:10 -0700</date>
            <delta_ts>2020-07-02 20:34:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>36825</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisK
IDIwMjAtMDctMDEgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAg
ICAgICAgIFVzZSBtb3JlIGVmZmljaWVudCBtYWtlU3RyaW5nKCkgaW5zdGVhZCBvZiBTdHJpbmdC
dWlsZGVyCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkocmV2aXNpb24gMjYzODA4KQorKysgU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNyw2ICs0MDcs
MTMgQEAKICNkZWZpbmUgSEFWRV9CUk9LRU5fRE9XTkxPQURfUkVTVU1FX1VOTElOSyAxCiAjZW5k
aWYKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxNjAwKSBcCisgICAgfHwgKChQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKSBc
CisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gNzAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfSFNUU19TVE9SQUdF
IDEKKyNlbmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCiAjZGVmaW5lIEhBVkVfQ0ZORVRX
T1JLX01FVFJJQ1NfQVBJU19WNCAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2
aXNpb24gMjYzODA4KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6
CisKIDIwMjAtMDYtMzAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPU10gQ29ubmVjdGlvbnMgdG8gdGhlIHByZWZlcmVuY2UgZGFlbW9uIGFyZSBl
c3RhYmxpc2hlZCBiZWZvcmUgZW50ZXJpbmcgdGhlIHNhbmRib3gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCShyZXZpc2lvbiAyNjM4MDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMwLDYgKzIzMCw5IEBACiBAcHJvcGVydHkgKG51bGxhYmxlLCByZXRhaW4pIF9O
U0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSAqX2FsdGVybmF0aXZlU2VydmljZXNTdG9y
YWdlOwogQHByb3BlcnR5IChyZWFkb25seSwgYXNzaWduKSBCT09MIF9hbGxvd3NIVFRQMzsKICNl
bmRpZgorI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorQHByb3BlcnR5IChudWxsYWJsZSwgcmV0YWlu
KSBfTlNIU1RTU3RvcmFnZSAqX2hzdHNTdG9yYWdlOworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZh
Y2UgTlNVUkxTZXNzaW9uVGFzayAoKQpAQCAtMjk0LDYgKzI5NywxNiBAQAogCiBleHRlcm4gTlNT
dHJpbmcgKiBjb25zdCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kT0F1dGg7CiAKKyNpZiBIQVZF
KEhTVFNfU1RPUkFHRSkKK0BpbnRlcmZhY2UgX05TSFNUU1N0b3JhZ2UgOiBOU09iamVjdAorLShp
bnN0YW5jZXR5cGUpaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6KG51bGxhYmxlIE5TVVJMKilw
YXRoOworLShCT09MKXNob3VsZFByb21vdGVIb3N0VG9IVFRQUzooTlNTdHJpbmcgKilob3N0Owor
LShOU0FycmF5PE5TU3RyaW5nICo+ICopbm9uUHJlbG9hZGVkSG9zdHM7CistKHZvaWQpcmVzZXRI
U1RTRm9ySG9zdDooTlNTdHJpbmcgKilob3N0OworLSh2b2lkKXJlc2V0SFNUU0hvc3RzU2luY2VE
YXRlOihOU0RhdGUgKilkYXRlOworQGVuZAorI2VuZGlmCisKICNlbmRpZiAvLyBkZWZpbmVkKF9f
T0JKQ19fKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oV0lOKSB8fCBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQpAQCAtNDA3LDcgKzQyMCw3IEBACiBDRkRhdGFSZWYgX0NGTmV0d29ya0NvcHlBVFNDb250
ZXh0KHZvaWQpOwogQm9vbGVhbiBfQ0ZOZXR3b3JrU2V0QVRTQ29udGV4dChDRkRhdGFSZWYpOwog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFIQVZFKEhTVFNf
U1RPUkFHRSkKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGTmV0d29ya0hTVFNQcmVsb2Fk
ZWQ7CiBDRkRpY3Rpb25hcnlSZWYgX0NGTmV0d29ya0NvcHlIU1RTUG9saWNpZXMoQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZik7CiB2b2lkIF9DRk5ldHdvcmtSZXNldEhTVFMoQ0ZVUkxSZWYsIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzgwOCkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIw
MjAtMDctMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNYWtlIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIFNQSSBmb3IgSFNU
UyBzdG9yYWdlIHRvIHJlcGxhY2UgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmhzdHNTdG9y
YWdlRGlyZWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTMwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAg
ICAgIFRoaXMgdXNlcyBDRk5ldHdvcmsgU1BJIGludHJvZHVjZWQgaW4gcmRhcjovL3Byb2JsZW0v
NTAxMDk2MzEgdG8gYWxsb3cgSFNUUyBzdG9yYWdlIHBlciBOU1VSTFNlc3Npb24uCisgICAgICAg
IFRvIGJlIGNvbXBsZXRlLCBJIGFsc28gZGVwcmVjYXRlZCBvdXIgVUkgcHJvY2VzcyBIU1RTIHN0
YXRlIHJlbW92YWwgYXR0ZW1wdCBTUElzLCBXS0NvbnRleHRSZXNldEhTVFNIb3N0cyBhbmQKKyAg
ICAgICAgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZSwgd2hpY2ggaGFkIHRo
ZWlyIGxhc3QgdXNlIHJlbW92ZWQgaW4gcmRhcjovL3Byb2JsZW0vNjQyMjA4MzguCisKKyAgICAg
ICAgSSBtYW51YWxseSB2ZXJpZmllZCB0aGF0IHRoaXMgbmV3IFNQSSBwdXRzIEhTVFMgZGF0YSBp
biB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLCBhbmQgSSBhbHNvIHZlcmlmaWVkIHRoYXQgSFNUUwor
ICAgICAgICBzdGF0ZSBxdWVyeWluZyBhbmQgcmVtb3ZhbCB3b3JrcyB3aXRoIHRoZSBuZXcgQ0ZO
ZXR3b3JrIFNQSSBhcyBpdCBkaWQgd2l0aCB0aGUgb2xkIG9uZS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0
aFdlYnNpdGVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6Omhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpoc3RzU3RvcmFnZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9z
dE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0
UHJpdmF0ZU1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJp
dmF0ZU1hYy5tbToKKyAgICAgICAgKFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKToKKyAgICAgICAg
KFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24ubW06CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGhz
dHNTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uIHNldEhTVFNTdG9yYWdlRGlyZWN0b3J5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojpwcml2YXRl
QnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnJlc2V0SFNUU0hvc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpyZXNvbHZlZEhTVFNTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmg6CisKIDIwMjAtMDctMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBDcmFzaCB1bmRlciBJUEM6OmlzVmFsaWRNZXNzYWdlTmFtZSgpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2
aXNpb24gMjYzODA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzQsMTAgKzE1MzQsOCBAQAogICAgIH0KIAog
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKLSAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0g
ICAgICAgICAgICBnZXRIb3N0TmFtZXNXaXRoSFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Np
b24sIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRoSFNUU0Nh
Y2hlKTsKLSAgICB9CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpIU1RTQ2FjaGUpKQorICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0
ZURhdGEuaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vz
c2lvbklEKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCkBAIC0xNTk2
LDEwICsxNTk0LDggQEAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0
ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKLSAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25J
RCkpCi0gICAgICAgICAgICBjbGVhckhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBt
b2RpZmllZFNpbmNlKTsKLSAgICB9CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQorICAgICAgICBjbGVhckhTVFNDYWNoZShzZXNz
aW9uSUQsIG1vZGlmaWVkU2luY2UpOwogI2VuZGlmCiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7CkBAIC0xNzAxLDEwICsxNjk3
LDggQEAKICAgICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQpKQotICAgICAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKCpu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIEhTVFNDYWNoZUhvc3ROYW1lcyk7Ci0gICAgfQorICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkK
KyAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKHNlc3Npb25JRCwgSFNUU0NhY2hl
SG9zdE5hbWVzKTsKICNlbmRpZgogCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VS
VklDRSkKQEAgLTE4NzIsMTUgKzE4NjYsMTMgQEAKICAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFt
ZXNXaXRoSFNUU1RvRGVsZXRlOwogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKICAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNo
ZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7Ci0gICAg
ICAgICAgICBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVE
b21haW5zKGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBob3N0TmFt
ZXNXaXRoSFNUU0NhY2hlKTsKKyAgICAgICAgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSA9IHRoaXMt
Pmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKKyAgICAgICAgaG9zdG5hbWVzV2l0
aEhTVFNUb0RlbGV0ZSA9IGZpbHRlckZvclJlZ2lzdHJhYmxlRG9tYWlucyhkb21haW5zVG9EZWxl
dGVBbGxOb25Db29raWVXZWJzaXRlRGF0YUZvciwgaG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk7CiAK
LSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhIU1RTVG9E
ZWxldGUpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX2RvbWFpbnMuYWRk
KFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChob3N0KSk7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgaG9zdCA6IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpCisg
ICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsKIAotICAgICAgICAgICAgZGVs
ZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGhvc3RuYW1l
c1dpdGhIU1RTVG9EZWxldGUpOwotICAgICAgICB9CisgICAgICAgIGRlbGV0ZUhTVFNDYWNoZUZv
ckhvc3ROYW1lcyhzZXNzaW9uSUQsIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUpOwogICAgIH0K
ICNlbmRpZgogCkBAIC0yMDU3LDE4ICsyMDQ5LDE2IEBACiAgICAgICAgIH0pOwogICAgIH0pKTsK
ICAgICAKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gY2FsbGJhY2tBZ2dyZWdhdG9yLT5t
X3dlYnNpdGVEYXRhOworICAgIGF1dG8mIHdlYnNpdGVEYXRhID0gY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX3dlYnNpdGVEYXRhOwogICAgIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgICAgICBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHdlYnNpdGVEYXRh
U3RvcmUuaG9zdE5hbWVzV2l0aENvb2tpZXMpOworICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5nZXRIb3N0bmFtZXNXaXRoQ29va2llcyh3ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRo
Q29va2llcyk7CiAgICAgfQogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkK
LSAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFND
YWNoZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgICAgICBnZXRIb3N0TmFtZXNXaXRoSFNUU0Nh
Y2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIHdlYnNpdGVEYXRhU3RvcmUuaG9zdE5hbWVzV2l0
aEhTVFNDYWNoZSk7Ci0gICAgfQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKKyAgICAgICAgd2Vic2l0ZURhdGEuaG9zdE5hbWVz
V2l0aEhTVFNDYWNoZSA9IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoc2Vzc2lvbklEKTsKICNlbmRp
ZgogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpD
cmVkZW50aWFscykpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDI2MzgwOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDkgKzE5Myw5
IEBACiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEo
KSBjb25zdDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKLSAgICB2
b2lkIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgSGFzaFNldDxTdHJpbmc+Jik7Ci0gICAgdm9pZCBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0
TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKLSAgICB2b2lkIGNsZWFySFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOworICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0
TmFtZXNXaXRoSFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKKyAgICB2b2lkIGRlbGV0
ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKKyAgICB2b2lkIGNsZWFySFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklELCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlKTsKICNlbmRpZgogCiAgICAgdm9pZCBmaW5kUGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjYzODA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDYgKzU3LDggQEAKICAgICBlbmNvZGVyIDw8IGFsdGVybmF0aXZlU2VydmljZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IGh0dHAzRW5hYmxlZDsKICNl
bmRpZgorICAgIGVuY29kZXIgPDwgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgZW5jb2RlciA8
PCBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICNpZiBVU0UoU09VUCkKICAg
ICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBlbmNvZGVyIDw8
IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZTsKQEAgLTE1Myw2ICsxNTUsMTYgQEAKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCisgICAgT3B0aW9uYWw8U3RyaW5nPiBo
c3RzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBkZWNvZGVyID4+IGhzdHNTdG9yYWdlRGlyZWN0b3J5
OworICAgIGlmICghaHN0c1N0b3JhZ2VEaXJlY3RvcnkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhzdHNTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKICNpZiBV
U0UoU09VUCkKICAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0
aDsKICAgICBkZWNvZGVyID4+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKQEAgLTI3NSw2
ICsyODcsOCBAQAogICAgICAgICAsIFdURk1vdmUoKmFsdGVybmF0aXZlU2VydmljZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgLCBXVEZNb3ZlKCpodHRwM0VuYWJsZWQpCiAjZW5k
aWYKKyAgICAgICAgLCBXVEZNb3ZlKCpoc3RzU3RvcmFnZURpcmVjdG9yeSkKKyAgICAgICAgLCBX
VEZNb3ZlKCpoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICNpZiBVU0UoU09V
UCkKICAgICAgICAgLCBXVEZNb3ZlKCpjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgpCiAgICAg
ICAgICwgV1RGTW92ZSgqY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjYzODA4KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw2ICs2OSw4IEBACiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBib29sIGh0
dHAzRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKKyAgICBTdHJpbmcgaHN0c1N0b3JhZ2VEaXJl
Y3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhzdHNTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogI2lmIFVTRShTT1VQKQogICAgIFN0cmluZyBjb29raWVQZXJzaXN0
ZW50U3RvcmFnZVBhdGg7CiAgICAgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSBjb29r
aWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUgeyBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBl
OjpUZXh0IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyNjM4MDgpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEzNCw2ICsxMzQsNyBAQAogI2VuZGlmCiB9CiAKKyNpZiAhSEFW
RShIU1RTX1NUT1JBR0UpCiBzdGF0aWMgdm9pZCBmaWx0ZXJQcmVsb2FkSFNUU0VudHJ5KGNvbnN0
IHZvaWQqIGtleSwgY29uc3Qgdm9pZCogdmFsdWUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoY29udGV4dCk7CkBAIC0xNTIsMjcgKzE1Myw1MyBAQAogICAgIGlmIChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZSh2YWwsIF9rQ0ZOZXR3b3JrSFNUU1ByZWxvYWRlZCkgIT0ga0NGQm9v
bGVhblRydWUpCiAgICAgICAgIGhvc3RuYW1lcy0+YWRkKChDRlN0cmluZ1JlZilrZXkpOwogfQor
I2VuZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4m
IGhvc3ROYW1lcykKK0hhc2hTZXQ8U3RyaW5nPiBOZXR3b3JrUHJvY2Vzczo6aG9zdE5hbWVzV2l0
aEhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0CiB7Ci0gICAgaWYgKGF1
dG8gSFNUU1BvbGljaWVzID0gYWRvcHRDRihfQ0ZOZXR3b3JrQ29weUhTVFNQb2xpY2llcyhzZXNz
aW9uLnBsYXRmb3JtU2Vzc2lvbigpKSkpCi0gICAgICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rp
b24oSFNUU1BvbGljaWVzLmdldCgpLCBmaWx0ZXJQcmVsb2FkSFNUU0VudHJ5LCAmaG9zdE5hbWVz
KTsKKyAgICBIYXNoU2V0PFN0cmluZz4gaG9zdE5hbWVzOworI2lmIEhBVkUoSFNUU19TVE9SQUdF
KQorICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNz
aW9uQ29jb2EqPih0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkgeworICAgICAgICBm
b3IgKE5TU3RyaW5nICpob3N0IGluIG5ldHdvcmtTZXNzaW9uLT5oc3RzU3RvcmFnZSgpLm5vblBy
ZWxvYWRlZEhvc3RzKQorICAgICAgICAgICAgaG9zdE5hbWVzLmFkZChob3N0KTsKKyAgICB9Cisj
ZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkg
eworICAgICAgICBpZiAoYXV0byBIU1RTUG9saWNpZXMgPSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5
SFNUU1BvbGljaWVzKHNlc3Npb24tPnBsYXRmb3JtU2Vzc2lvbigpKSkpCisgICAgICAgICAgICBD
RkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKEhTVFNQb2xpY2llcy5nZXQoKSwgZmlsdGVyUHJlbG9h
ZEhTVFNFbnRyeSwgJmhvc3ROYW1lcyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGhvc3RO
YW1lczsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5h
bWVzKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3ROYW1lcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNo
ZUZvckhvc3ROYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBob3N0TmFtZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykg
ewotICAgICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgaG9z
dE5hbWUpKTsKLSAgICAgICAgX0NGTmV0d29ya1Jlc2V0SFNUUyh1cmwuY3JlYXRlQ0ZVUkwoKS5n
ZXQoKSwgc2Vzc2lvbi5wbGF0Zm9ybVNlc3Npb24oKSk7CisjaWYgSEFWRShIU1RTX1NUT1JBR0Up
CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Np
b25Db2NvYSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKSB7CisgICAgICAgIGZv
ciAoYXV0byYgaG9zdE5hbWUgOiBob3N0TmFtZXMpCisgICAgICAgICAgICBbbmV0d29ya1Nlc3Np
b24tPmhzdHNTdG9yYWdlKCkgcmVzZXRIU1RTRm9ySG9zdDpob3N0TmFtZV07CiAgICAgfQorI2Vs
c2UKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykgeworICAgICAgICAgICAg
YXV0byB1cmwgPSBVUkwoeyB9LCBtYWtlU3RyaW5nKCJodHRwczovLyIsIGhvc3ROYW1lKSk7Cisg
ICAgICAgICAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTKHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBz
ZXNzaW9uLT5wbGF0Zm9ybVNlc3Npb24oKSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxs
VGltZSBtb2RpZmllZFNpbmNlKQogewogICAgIE5TVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCA9
IG1vZGlmaWVkU2luY2Uuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCk7CiAgICAgTlNEYXRl
ICpkYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDp0aW1lSW50ZXJ2
YWxdOwotCi0gICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKHNlc3Npb24ucGxh
dGZvcm1TZXNzaW9uKCksIChfX2JyaWRnZSBDRkRhdGVSZWYpZGF0ZSk7CisjaWYgSEFWRShIU1RT
X1NUT1JBR0UpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0
d29ya1Nlc3Npb25Db2NvYSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAg
ICAgICBbbmV0d29ya1Nlc3Npb24tPmhzdHNTdG9yYWdlKCkgcmVzZXRIU1RTSG9zdHNTaW5jZURh
dGU6ZGF0ZV07CisjZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKKyAgICAgICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKHNl
c3Npb24tPnBsYXRmb3JtU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVmKWRhdGUpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCShyZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogT0JK
Q19DTEFTUyBXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGU7CiBPQkpDX0NMQVNTIFdLTmV0d29ya1Nl
c3Npb25XZWJTb2NrZXREZWxlZ2F0ZTsKK09CSkNfQ0xBU1MgX05TSFNUU1N0b3JhZ2U7CiAKICNp
bmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQ29jb2EuaCIK
QEAgLTEwNCw2ICsxMDUsNyBAQAogICAgIHZvaWQgdGFza1NlcnZlckNvbm5lY3Rpb25TdWNjZWVk
ZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKICAgICB2b2lkIHRhc2tG
YWlsZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKICAgICBOU1VSTENy
ZWRlbnRpYWwgKnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgU3RyaW5n
JiBob3N0LCB1aW50MTZfdCBwb3J0KSBjb25zdDsKKyAgICBfTlNIU1RTU3RvcmFnZSAqaHN0c1N0
b3JhZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwo
KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2MzgwOCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTAgQEAKIAogI2ltcG9ydCAiRGV2aWNlTWFu
YWdlbWVudFNvZnRMaW5rLmgiCiAKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzb2Z0IGxpbmsgb25j
ZSByZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRh
dGVkLgorU09GVF9MSU5LX0ZSQU1FV09SSyhDRk5ldHdvcmspCitTT0ZUX0xJTktfQ0xBU1NfT1BU
SU9OQUwoQ0ZOZXR3b3JrLCBfTlNIU1RTU3RvcmFnZSkKKwogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogQ0ZTdHJpbmdSZWYgY29uc3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5ID0gc3Rh
dGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KEAiV2ViS2l0MkhUVFBQcm94eSIpOwpAQCAtMTA5Miw2ICsx
MDk2LDE3IEBACiAgICAgcmV0dXJuIG1fc3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlcy5nZXQo
a2V5KS5nZXQoKTsKIH0KIAorX05TSFNUU1N0b3JhZ2UgKk5ldHdvcmtTZXNzaW9uQ29jb2E6Omhz
dHNTdG9yYWdlKCkgY29uc3QKK3sKKyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKKyAgICBOU1VSTFNl
c3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gbV9zZXNzaW9uV2l0aENyZWRlbnRp
YWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbjsKKyAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgcmVzcG9uZHNUb1NlbGVjdG9yIGNoZWNrIG9uY2UgcmRhcjovL3Byb2JsZW0vNTAx
MDk2MzEgaXMgaW4gYSBidWlsZCBhbmQgYm90cyBhcmUgdXBkYXRlZC4KKyAgICBpZiAoW2NvbmZp
Z3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfaHN0c1N0b3JhZ2UpXSkKKyAg
ICAgICAgcmV0dXJuIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgp
LmNvbmZpZ3VyYXRpb24uX2hzdHNTdG9yYWdlOworI2VuZGlmCisgICAgcmV0dXJuIG5pbDsKK30K
KwogY29uc3QgU3RyaW5nJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpib3VuZEludGVyZmFjZUlkZW50
aWZpZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjsK
QEAgLTExNzIsNiArMTE4NywxNSBAQAogCiAgICAgTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25Gb3JTZXNzaW9uSUQobV9zZXNzaW9uSUQpOwog
CisjaWYgSEFWRShIU1RTX1NUT1JBR0UpCisgICAgaWYgKCEhcGFyYW1ldGVycy5oc3RzU3RvcmFn
ZURpcmVjdG9yeSAmJiAhbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgeworICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5oc3RzU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBy
ZXNwb25kc1RvU2VsZWN0b3IgY2hlY2sgb25jZSByZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBp
biBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgorICAgICAgICBpZiAoW2NvbmZpZ3VyYXRp
b24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfaHN0c1N0b3JhZ2UpXSkKKyAgICAgICAg
ICAgIGNvbmZpZ3VyYXRpb24uX2hzdHNTdG9yYWdlID0gW1thbGxvY19OU0hTVFNTdG9yYWdlSW5z
dGFuY2UoKSBpbml0UGVyc2lzdGVudFN0b3JlV2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OnBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkgaXNEaXJlY3Rvcnk6WUVTXV0gYXV0b3Jl
bGVhc2VdOworICAgIH0KKyNlbmRpZgorCiAjaWYgSEFWRShBUFBfU1NPKSB8fCBQTEFURk9STShN
QUNDQVRBTFlTVCkKICAgICBjb25maWd1cmF0aW9uLl9wcmV2ZW50c0FwcFNTTyA9IHRydWU7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCShyZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsMjEgKzk0LDIzIEBACiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KS51dGY4KCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgSGFz
aFNldDxTdHJpbmc+JiBob3N0TmFtZXMpCitIYXNoU2V0PFN0cmluZz4gTmV0d29ya1Byb2Nlc3M6
Omhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdAog
ewotICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNv
dXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOworICAgIEhh
c2hTZXQ8U3RyaW5nPiBob3N0TmFtZXM7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRp
Y19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpOwog
ICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmdldEhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUoaG9zdE5hbWVzKTsKKyAgICByZXR1cm4gaG9zdE5hbWVzOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1l
cykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMpCiB7
Ci0gICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291
cCo+KG5ldHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CisgICAgY29u
c3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpOwogICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigp
LmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhob3N0TmFtZXMpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHN0b3JhZ2VTZXNzaW9uLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQordm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Y2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlKQogewotICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxO
ZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9u
SUQoKSkpOworICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vz
c2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICBzZXNzaW9uLT5zb3Vw
TmV0d29ya1Nlc3Npb24oKS5jbGVhckhTVFNDYWNoZShtb2RpZmllZFNpbmNlKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5oCShyZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIFdLQ29udGV4dFByaXZhdGVNYWNfaAogCiAjaW5jbHVkZSA8
V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tQbHVnaW5Mb2FkUG9saWN5Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpA
QCAtNDMsMTEgKzQ0LDkgQEAKIHR5cGVkZWYgdm9pZCAoXldLQ29udGV4dEdldEluZm9Gb3JJbnN0
YWxsZWRQbHVnSW5zQmxvY2spKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYpOwogV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQbHVnSW5zQmxvY2sgYmxvY2spOwogCi1X
S19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0cyhXS0NvbnRleHRSZWYgY29udGV4
dCk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0cyhXS0NvbnRleHRSZWYg
Y29udGV4dCkgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJl
c2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIGRvdWJsZSBz
dGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAotLy8gVGhl
IHRpbWUgaGVyZSBpcyByZWxhdGl2ZSB0byB0aGUgVW5peCBlcG9jaC4KLVdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7Ci0KIFdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dFJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLU3RyaW5nUmVmIHNjaGVtZSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRVbnJl
Z2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3Ry
aW5nUmVmIHNjaGVtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21h
Yy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCShyZXZpc2lvbiAyNjM4MDgp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDE0ICsxMDEsMTIgQEAKICNlbmRpZgogfQogCi12
b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJlZiBjb250ZXh0KQordm9pZCBX
S0NvbnRleHRSZXNldEhTVFNIb3N0cyhXS0NvbnRleHRSZWYpCiB7Ci0gICAgcmV0dXJuIFdlYktp
dDo6dG9JbXBsKGNvbnRleHQpLT5yZXNldEhTVFNIb3N0cygpOwogfQogCi12b2lkIFdLQ29udGV4
dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIGRvdWJs
ZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCkKK3ZvaWQgV0tDb250ZXh0UmVzZXRIU1RTSG9z
dHNBZGRlZEFmdGVyRGF0ZShXS0NvbnRleHRSZWYsIGRvdWJsZSkKIHsKLSAgICByZXR1cm4gV2Vi
S2l0Ojp0b0ltcGwoY29udGV4dCktPnJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoc3RhcnRE
YXRlSW50ZXJ2YWxTaW5jZTE5NzApOwogfQogCiB2b2lkIFdLQ29udGV4dFJlZ2lzdGVyU2NoZW1l
Rm9yQ3VzdG9tUHJvdG9jb2woV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIHNjaGVt
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2MzgwOCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQAogQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgdXNlc1dlYlByb2Nlc3NDYWNoZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjE0LjQpLCBpb3MoMTIuMikpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgcGFnZUNh
Y2hlRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNKSVRFbmFibGVkKSBCT09MIEpJVEVuYWJsZWQg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwgc2V0dGVyPXNldEhTVFNTdG9yYWdlRGlyZWN0b3J5
OikgTlNVUkwgKmhzdHNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTUpLCBpb3MoMTMuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5LCBz
ZXR0ZXI9c2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnk6KSBOU1VSTCAqaHN0c1N0b3JhZ2VEaXJlY3Rv
cnkgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaHN0c1N0b3JhZ2VEaXJlY3RvcnkiLCBtYWNvcygxMC4xNSwgV0tfTUFD
X1RCQSksIGlvcygxMy4wLCBXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIGNvbmZpZ3VyZUpTQ0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2MzgwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Miw2ICs3Miw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYykgTlNVSW50ZWdl
ciB0ZXN0U3BlZWRNdWx0aXBsaWVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzdXBwcmVzc2Vz
Q29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIGFsbG93c1NlcnZlclByZWNvbm5lY3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwg
Y29weSwgc2V0dGVyPXNldEhTVFNTdG9yYWdlRGlyZWN0b3J5OikgTlNVUkwgKmhzdHNTdG9yYWdl
RGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNVUkwgKmFs
dGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI2MzgwOCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxOSBAQAogICAgIF9jb25maWd1cmF0aW9u
LT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAorLSAoTlNVUkwg
Kiloc3RzU3RvcmFnZURpcmVjdG9yeQoreworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOl9jb25maWd1cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllF
U107Cit9CisKKy0gKHZvaWQpc2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnk6KE5TVVJMICopdXJsCit7
CisgICAgaWYgKCFfY29uZmlndXJhdGlvbi0+aXNQZXJzaXN0ZW50KCkpCisgICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJDYW5ub3Qg
c2V0IGhzdHNTdG9yYWdlRGlyZWN0b3J5IG9uIGEgbm9uLXBlcnNpc3RlbnQgX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uIl07CisgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOworICAg
IF9jb25maWd1cmF0aW9uLT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeSh1cmwucGF0aCk7Cit9CisK
IC0gKE5TVVJMICopYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkKIHsKICAgICBy
ZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+YWx0ZXJuYXRpdmVT
ZXJ2aWNlc0RpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlz
aW9uIDI2MzgwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcyOCwxOCArNzI4LDYgQEAKICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fYWN0aXZh
dGlvbk9ic2VydmVyLmdldCgpXTsKIH0KIAotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYg
cHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgc2Vzc2lvbjsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7Ci0gICAgZGlz
cGF0Y2hfb25jZSgmb25jZSwgXnsKLSAgICAgICAgTlNTdHJpbmcgKmlkZW50aWZpZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALlByaXZhdGVCcm93c2luZyIsIFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl1dOwotICAgICAgICBzZXNzaW9uID0gY3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpZGVudGlmaWVyKTsK
LSAgICB9KTsKLQotICAgIHJldHVybiBzZXNzaW9uOwotfQotCiBib29sIFdlYlByb2Nlc3NQb29s
Ojppc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0CiB7CiAg
ICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBVUkwoVVJMKCksIHVybFN0cmluZykuY3JlYXRl
Q0ZVUkwoKTsKQEAgLTc0NywxOSArNzM1LDYgQEAKICAgICByZXR1cm4gX0NGTmV0d29ya0lzS25v
d25IU1RTSG9zdFdpdGhTZXNzaW9uKHVybC5nZXQoKSwgbnVsbHB0cik7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlc2V0SFNUU0hvc3RzKCkKLXsKLSAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RT
SG9zdHNXaXRoU2Vzc2lvbihudWxscHRyKTsKLSAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNX
aXRoU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpOwotfQotCi12b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKGRvdWJsZSBzdGFydERhdGVJbnRl
cnZhbFNpbmNlMTk3MCkKLXsKLSAgICBOU0RhdGUgKnN0YXJ0RGF0ZSA9IFtOU0RhdGUgZGF0ZVdp
dGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6c3RhcnREYXRlSW50ZXJ2YWxTaW5jZTE5NzBdOwotICAg
IF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1NpbmNlRGF0ZShudWxscHRyLCAoX19icmlkZ2UgQ0ZE
YXRlUmVmKXN0YXJ0RGF0ZSk7Ci0gICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRl
KHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgKF9fYnJpZGdlIENGRGF0ZVJlZilzdGFydERhdGUp
OwotfQotCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJW
RVJfQkxPQ0tJTkcpCiBPcHRpb25hbDx1bnNpZ25lZD4gV2ViUHJvY2Vzc1Bvb2w6Om5vbWluYWxG
cmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAko
cmV2aXNpb24gMjYzODA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAkod29ya2luZyBjb3B5KQpAQCAtNDIyLDggKzQyMiw2IEBACiAgICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6TWVzc2FnZU5hbWUpOwogCiAgICAgYm9vbCBp
c1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0OwotICAgIHZv
aWQgcmVzZXRIU1RTSG9zdHMoKTsKLSAgICB2b2lkIHJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRh
dGUoZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKTsKIAogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNv
bnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVB
c0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAkocmV2aXNpb24gMjYzODA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw2
ICsyMzIsOCBAQAogICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1f
Y29uZmlndXJhdGlvbi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSkpOwogICAg
IGlmICghbV9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkg
JiYgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1w
dHkoKSkKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURp
cmVjdG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5oc3Rz
U3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+
aHN0c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgpKSk7CiAKICAg
ICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIGZvciBmaWxlIHBhdGhzLgogICAgIGlmICghbV9jb25m
aWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkgewpAQCAtMjI1OSw2ICsy
MjYxLDExIEBACiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rvcnko
bmV0d29ya0NhY2hlRGlyZWN0b3J5LCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogCisgICAgYXV0byBoc3RzU3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVkSFNUU1N0b3Jh
Z2VEaXJlY3RvcnkoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaHN0c1N0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShoc3RzU3RvcmFnZURpcmVjdG9yeSwgaHN0c1N0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOworCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7CiAgICAgYXV0byBmaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
OjpBbGxCdXRDb29raWVzOwpAQCAtMjMwMCw2ICsyMzA3LDggQEAKICAgICBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMuYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25z
Rm9yVGVzdGluZyA9IG1fY29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5h
Z2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZygpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBXVEZNb3ZlKG5ldHdvcmtDYWNoZURpcmVjdG9y
eSk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUobmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3Rvcnkg
PSBXVEZNb3ZlKGhzdHNTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBuZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKGhzdHNT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSA9IG1fY29uZmlndXJhdGlvbi0+ZGF0YUNv
bm5lY3Rpb25TZXJ2aWNlVHlwZSgpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5mYXN0
U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCA9IG1fY29uZmlndXJhdGlvbi0+ZmFzdFNlcnZl
clRydXN0RXZhbHVhdGlvbkVuYWJsZWQoKTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
bmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCA9IG1fY29uZmlndXJhdGlv
bi0+bmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCgpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAkocmV2aXNpb24gMjYzODA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiArMjI0
LDcgQEAKICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7IH0KICAgICBjb25z
dCBTdHJpbmcmIHJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSFNUU1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+aHN0c1N0b3Jh
Z2VEaXJlY3RvcnkoKTsgfQogCiAgICAgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UmIGRldmljZUlk
SGFzaFNhbHRTdG9yYWdlKCkgeyByZXR1cm4gbV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5nZXQo
KTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCShy
ZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkg
KzY3LDcgQEAKICAgICBjb3B5LT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX3NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5tX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3Rvcnk7CiAgICAgY29weS0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
d2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0jaWYgVVNFKEdMSUIpCiAgICAgY29weS0+bV9oc3Rz
U3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1faHN0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0jZW5kaWYK
ICAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OwogICAgIGNvcHktPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMt
Pm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2FsdGVybmF0aXZlU2Vy
dmljZXNEaXJlY3RvcnkgPSB0aGlzLT5tX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rvcnk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI2Mzgw
OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDEwICs2NiwxMCBAQAogCiAg
ICAgY29uc3QgU3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9Ci0jaWYgVVNFKEdMSUIpIC8vIEFjY29yZGluZyB0byBy
MjQ1MDc1IHRoaXMgd2lsbCBldmVudHVhbGx5IG1vdmUgaGVyZS4KKwogICAgIGNvbnN0IFN0cmlu
ZyYgaHN0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2hzdHNTdG9yYWdlRGly
ZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRIU1RTU3RvcmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJl
Y3RvcnkpIHsgbV9oc3RzU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQot
I2VuZGlmCisKICAgICBjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbG9jYWxTdG9yYWdlRGlyZWN0
b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAKQEAgLTE3NCw4ICsxNzQsOCBAQAogICAgIFN0
cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk7CisgICAgU3RyaW5nIG1faHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAjaWYgVVNFKEdM
SUIpCi0gICAgU3RyaW5nIG1faHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgYm9vbCBtX25ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgeyB0cnVlIH07CiAjZWxzZQogICAg
IGJvb2wgbV9uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2Ug
fTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403436</attachid>
            <date>2020-07-02 20:34:55 -0700</date>
            <delta_ts>2020-08-24 12:52:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>36824</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA3LTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwog
MjAyMC0wNy0wMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVXNlIG1vcmUgZWZmaWNpZW50IG1ha2VTdHJpbmcoKSBpbnN0ZWFkIG9mIFN0cmluZ0J1
aWxkZXIKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCShyZXZpc2lvbiAyNjM4MDgpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDA3LDYgKzQwNywx
MyBAQAogI2RlZmluZSBIQVZFX0JST0tFTl9ET1dOTE9BRF9SRVNVTUVfVU5MSU5LIDEKICNlbmRp
ZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE2MDApIFwKKyAgICB8fCAoKFBMQVRGT1JNKElPUykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApIFwK
KyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSA3MDAwMCkgXAorICAgIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkKKyNkZWZpbmUgSEFWRV9IU1RTX1NUT1JBR0Ug
MQorI2VuZGlmCisKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkKICNkZWZpbmUgSEFWRV9DRk5FVFdP
UktfTUVUUklDU19BUElTX1Y0IDEKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDctMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uIFNQSSBmb3IgSFNUUyBzdG9yYWdlIHRvIHJlcGxhY2UgX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDoK
KwogMjAyMC0wNi0zMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW21hY09TXSBDb25uZWN0aW9ucyB0byB0aGUgcHJlZmVyZW5jZSBkYWVtb24gYXJlIGVz
dGFibGlzaGVkIGJlZm9yZSBlbnRlcmluZyB0aGUgc2FuZGJveApJbmRleDogU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHJldmlzaW9uIDI2MzgwOCkKKysr
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzAsNiArMjMwLDkgQEAKIEBwcm9wZXJ0eSAobnVsbGFibGUsIHJldGFpbikgX05T
SFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlICpfYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3Jh
Z2U7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBhc3NpZ24pIEJPT0wgX2FsbG93c0hUVFAzOwogI2Vu
ZGlmCisjaWYgSEFWRShIU1RTX1NUT1JBR0UpCitAcHJvcGVydHkgKG51bGxhYmxlLCByZXRhaW4p
IF9OU0hTVFNTdG9yYWdlICpfaHN0c1N0b3JhZ2U7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFj
ZSBOU1VSTFNlc3Npb25UYXNrICgpCkBAIC0yOTQsNiArMjk3LDE2IEBACiAKIGV4dGVybiBOU1N0
cmluZyAqIGNvbnN0IE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RPQXV0aDsKIAorI2lmIEhBVkUo
SFNUU19TVE9SQUdFKQorQGludGVyZmFjZSBfTlNIU1RTU3RvcmFnZSA6IE5TT2JqZWN0CistKGlu
c3RhbmNldHlwZSlpbml0UGVyc2lzdGVudFN0b3JlV2l0aFVSTDoobnVsbGFibGUgTlNVUkwqKXBh
dGg7CistKEJPT0wpc2hvdWxkUHJvbW90ZUhvc3RUb0hUVFBTOihOU1N0cmluZyAqKWhvc3Q7Cist
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilub25QcmVsb2FkZWRIb3N0czsKKy0odm9pZClyZXNldEhT
VFNGb3JIb3N0OihOU1N0cmluZyAqKWhvc3Q7CistKHZvaWQpcmVzZXRIU1RTSG9zdHNTaW5jZURh
dGU6KE5TRGF0ZSAqKWRhdGU7CitAZW5kCisjZW5kaWYKKwogI2VuZGlmIC8vIGRlZmluZWQoX19P
QkpDX18pCiAKICNlbmRpZiAvLyBQTEFURk9STShXSU4pIHx8IFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCkBAIC00MDcsNyArNDIwLDcgQEAKIENGRGF0YVJlZiBfQ0ZOZXR3b3JrQ29weUFUU0NvbnRl
eHQodm9pZCk7CiBCb29sZWFuIF9DRk5ldHdvcmtTZXRBVFNDb250ZXh0KENGRGF0YVJlZik7CiAK
LSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIUhBVkUoSFNUU19T
VE9SQUdFKQogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZOZXR3b3JrSFNUU1ByZWxvYWRl
ZDsKIENGRGljdGlvbmFyeVJlZiBfQ0ZOZXR3b3JrQ29weUhTVFNQb2xpY2llcyhDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmKTsKIHZvaWQgX0NGTmV0d29ya1Jlc2V0SFNUUyhDRlVSTFJlZiwgQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYzODA4KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2NSBAQAorMjAy
MC0wNy0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIE1ha2UgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gU1BJIGZvciBIU1RT
IHN0b3JhZ2UgdG8gcmVwbGFjZSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaHN0c1N0b3Jh
Z2VEaXJlY3RvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMzA0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAg
ICAgVGhpcyB1c2VzIENGTmV0d29yayBTUEkgaW50cm9kdWNlZCBpbiByZGFyOi8vcHJvYmxlbS81
MDEwOTYzMSB0byBhbGxvdyBIU1RTIHN0b3JhZ2UgcGVyIE5TVVJMU2Vzc2lvbi4KKyAgICAgICAg
VG8gYmUgY29tcGxldGUsIEkgYWxzbyBkZXByZWNhdGVkIG91ciBVSSBwcm9jZXNzIEhTVFMgc3Rh
dGUgcmVtb3ZhbCBhdHRlbXB0IFNQSXMsIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzIGFuZAorICAg
ICAgICBXS0NvbnRleHRSZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlLCB3aGljaCBoYWQgdGhl
aXIgbGFzdCB1c2UgcmVtb3ZlZCBpbiByZGFyOi8vcHJvYmxlbS82NDIyMDgzOC4KKworICAgICAg
ICBJIG1hbnVhbGx5IHZlcmlmaWVkIHRoYXQgdGhpcyBuZXcgU1BJIHB1dHMgSFNUUyBkYXRhIGlu
IHRoZSBzcGVjaWZpZWQgbG9jYXRpb24sIGFuZCBJIGFsc28gdmVyaWZpZWQgdGhhdCBIU1RTCisg
ICAgICAgIHN0YXRlIHF1ZXJ5aW5nIGFuZCByZW1vdmFsIHdvcmtzIHdpdGggdGhlIG5ldyBDRk5l
dHdvcmsgU1BJIGFzIGl0IGRpZCB3aXRoIHRoZSBvbGQgb25lLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZWdpc3RyYWJsZURvbWFpbnNXaXRo
V2Vic2l0ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6aG9zdE5hbWVzV2l0aEhTVFNDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmhzdHNTdG9yYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aG9zdE5hbWVzV2l0aEhTVFNDYWNoZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0
TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5hbWVzV2l0aEhTVFND
YWNoZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQ
cml2YXRlTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2
YXRlTWFjLm1tOgorICAgICAgICAoV0tDb250ZXh0UmVzZXRIU1RTSG9zdHMpOgorICAgICAgICAo
V0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5tbToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gaHN0
c1N0b3JhZ2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gc2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnByaXZhdGVC
cm93c2luZ1Nlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cmVzZXRIU1RTSG9zdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6cmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlc29sdmVkSFNUU1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaDoKKwogMjAyMC0wNy0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIENyYXNoIHVuZGVyIElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1lKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZp
c2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzNCwxMCArMTUzNCw4IEBACiAgICAgfQogCiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0
byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAg
ICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUpOwotICAgIH0KKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRl
RGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNz
aW9uSUQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTE1OTYs
MTAgKzE1OTQsOCBAQAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRl
RGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQotICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKLSAgICAgICAgICAgIGNsZWFySFNUU0NhY2hlKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG1v
ZGlmaWVkU2luY2UpOwotICAgIH0KKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAgIGNsZWFySFNUU0NhY2hlKHNlc3Np
b25JRCwgbW9kaWZpZWRTaW5jZSk7CiAjZW5kaWYKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcykpIHsKQEAgLTE3MDEsMTAgKzE2OTcs
OCBAQAogICAgIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKLSAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25JRCkpCi0gICAgICAgICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoKm5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiwgSFNUU0NhY2hlSG9zdE5hbWVzKTsKLSAgICB9CisgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQor
ICAgICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoc2Vzc2lvbklELCBIU1RTQ2FjaGVI
b3N0TmFtZXMpOwogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJW
SUNFKQpAQCAtMTg3MiwxNSArMTg2NiwxMyBAQAogICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1l
c1dpdGhIU1RTVG9EZWxldGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hl
KSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNo
ZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKLSAgICAg
ICAgICAgIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURv
bWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUpOworICAgICAgICBob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gdGhpcy0+
aG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOworICAgICAgICBob3N0bmFtZXNXaXRo
SFNUU1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0
ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKIAot
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aEhTVFNUb0Rl
bGV0ZSkKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQo
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSkKKyAg
ICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOwogCi0gICAgICAgICAgICBkZWxl
dGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgaG9zdG5hbWVz
V2l0aEhTVFNUb0RlbGV0ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9y
SG9zdE5hbWVzKHNlc3Npb25JRCwgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSk7CiAgICAgfQog
I2VuZGlmCiAKQEAgLTIwNTcsMTggKzIwNDksMTYgQEAKICAgICAgICAgfSk7CiAgICAgfSkpOwog
ICAgIAotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1f
d2Vic2l0ZURhdGE7CisgICAgYXV0byYgd2Vic2l0ZURhdGEgPSBjYWxsYmFja0FnZ3JlZ2F0b3It
Pm1fd2Vic2l0ZURhdGE7CiAgICAgCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0
b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMod2Vic2l0ZURhdGFT
dG9yZS5ob3N0TmFtZXNXaXRoQ29va2llcyk7CisgICAgICAgICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24tPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhD
b29raWVzKTsKICAgICB9CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQot
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0Nh
Y2hlKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgd2Vic2l0ZURhdGFTdG9yZS5ob3N0TmFtZXNXaXRo
SFNUU0NhY2hlKTsKLSAgICB9CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKQorICAgICAgICB3ZWJzaXRlRGF0YS5ob3N0TmFtZXNX
aXRoSFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOwogI2VuZGlm
CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNy
ZWRlbnRpYWxzKSkgewpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjYzODA4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsOSArMTkzLDkg
QEAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgp
IGNvbnN0OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQotICAgIHZv
aWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBIYXNoU2V0PFN0cmluZz4mKTsKLSAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3RO
YW1lcyhXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYpOwotICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7CisgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQpIGNvbnN0OworICAgIHZvaWQgZGVsZXRl
SFNUU0NhY2hlRm9ySG9zdE5hbWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYpOworICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQsIFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UpOwogI2VuZGlmCiAKICAgICB2b2lkIGZpbmRQZW5kaW5nRG93bmxvYWRMb2Nh
dGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNiArNTcsOCBAQAogICAgIGVuY29kZXIgPDwgYWx0ZXJuYXRpdmVTZXJ2aWNlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgaHR0cDNFbmFibGVkOwogI2Vu
ZGlmCisgICAgZW5jb2RlciA8PCBoc3RzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8
IGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2lmIFVTRShTT1VQKQogICAg
IGVuY29kZXIgPDwgY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGVuY29kZXIgPDwg
Y29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOwpAQCAtMTUzLDYgKzE1NSwxNiBAQAogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKKyAgICBPcHRpb25hbDxTdHJpbmc+IGhz
dHNTdG9yYWdlRGlyZWN0b3J5OworICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7
CisgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaHN0c1N0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZGVjb2RlciA+PiBoc3RzU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAogI2lmIFVT
RShTT1VQKQogICAgIE9wdGlvbmFsPFN0cmluZz4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRo
OwogICAgIGRlY29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwpAQCAtMjc1LDYg
KzI4Nyw4IEBACiAgICAgICAgICwgV1RGTW92ZSgqYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICAsIFdURk1vdmUoKmh0dHAzRW5hYmxlZCkKICNlbmRp
ZgorICAgICAgICAsIFdURk1vdmUoKmhzdHNTdG9yYWdlRGlyZWN0b3J5KQorICAgICAgICAsIFdU
Rk1vdmUoKmhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQogI2lmIFVTRShTT1VQ
KQogICAgICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCkKICAgICAg
ICAgLCBXVEZNb3ZlKCpjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDYgKzY5LDggQEAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
YWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGJvb2wgaHR0
cDNFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgorICAgIFN0cmluZyBoc3RzU3RvcmFnZURpcmVj
dG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaHN0c1N0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAjaWYgVVNFKFNPVVApCiAgICAgU3RyaW5nIGNvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlUGF0aDsKICAgICBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlIGNvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSB7IFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU6
OlRleHQgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Byb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2MzgwOCkKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw3IEBACiAjZW5kaWYKIH0KIAorI2lmICFIQVZF
KEhTVFNfU1RPUkFHRSkKIHN0YXRpYyB2b2lkIGZpbHRlclByZWxvYWRIU1RTRW50cnkoY29uc3Qg
dm9pZCoga2V5LCBjb25zdCB2b2lkKiB2YWx1ZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBSRUxF
QVNFX0FTU0VSVChjb250ZXh0KTsKQEAgLTE1MiwyNyArMTUzLDUzIEBACiAgICAgaWYgKENGRGlj
dGlvbmFyeUdldFZhbHVlKHZhbCwgX2tDRk5ldHdvcmtIU1RTUHJlbG9hZGVkKSAhPSBrQ0ZCb29s
ZWFuVHJ1ZSkKICAgICAgICAgaG9zdG5hbWVzLT5hZGQoKENGU3RyaW5nUmVmKWtleSk7CiB9Cisj
ZW5kaWYKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdE5hbWVzKQorSGFzaFNldDxTdHJpbmc+IE5ldHdvcmtQcm9jZXNzOjpob3N0TmFtZXNXaXRo
SFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKIHsKLSAgICBpZiAoYXV0
byBIU1RTUG9saWNpZXMgPSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5SFNUU1BvbGljaWVzKHNlc3Np
b24ucGxhdGZvcm1TZXNzaW9uKCkpKSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5QXBwbHlGdW5jdGlv
bihIU1RTUG9saWNpZXMuZ2V0KCksIGZpbHRlclByZWxvYWRIU1RTRW50cnksICZob3N0TmFtZXMp
OworICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXM7CisjaWYgSEFWRShIU1RTX1NUT1JBR0Up
CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Np
b25Db2NvYSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKSB7CisgICAgICAgIGZv
ciAoTlNTdHJpbmcgKmhvc3QgaW4gbmV0d29ya1Nlc3Npb24tPmhzdHNTdG9yYWdlKCkubm9uUHJl
bG9hZGVkSG9zdHMpCisgICAgICAgICAgICBob3N0TmFtZXMuYWRkKGhvc3QpOworICAgIH0KKyNl
bHNlCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CisgICAgICAgIGlmIChhdXRvIEhTVFNQb2xpY2llcyA9IGFkb3B0Q0YoX0NGTmV0d29ya0NvcHlI
U1RTUG9saWNpZXMoc2Vzc2lvbi0+cGxhdGZvcm1TZXNzaW9uKCkpKSkKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeUFwcGx5RnVuY3Rpb24oSFNUU1BvbGljaWVzLmdldCgpLCBmaWx0ZXJQcmVsb2Fk
SFNUU0VudHJ5LCAmaG9zdE5hbWVzKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gaG9zdE5h
bWVzOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFt
ZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaG9zdE5hbWVzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hl
Rm9ySG9zdE5hbWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGhvc3ROYW1lcykKIHsKLSAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogaG9zdE5hbWVzKSB7
Ci0gICAgICAgIGF1dG8gdXJsID0gVVJMKHsgfSwgbWFrZVN0cmluZygiaHR0cHM6Ly8iLCBob3N0
TmFtZSkpOwotICAgICAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTKHVybC5jcmVhdGVDRlVSTCgpLmdl
dCgpLCBzZXNzaW9uLnBsYXRmb3JtU2Vzc2lvbigpKTsKKyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkK
KyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lv
bkNvY29hKj4odGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykKKyAgICAgICAgICAgIFtuZXR3b3JrU2Vzc2lv
bi0+aHN0c1N0b3JhZ2UoKSByZXNldEhTVFNGb3JIb3N0Omhvc3ROYW1lXTsKICAgICB9CisjZWxz
ZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewor
ICAgICAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogaG9zdE5hbWVzKSB7CisgICAgICAgICAgICBh
dXRvIHVybCA9IFVSTCh7IH0sIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgaG9zdE5hbWUpKTsKKyAg
ICAgICAgICAgIF9DRk5ldHdvcmtSZXNldEhTVFModXJsLmNyZWF0ZUNGVVJMKCkuZ2V0KCksIHNl
c3Npb24tPnBsYXRmb3JtU2Vzc2lvbigpKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxU
aW1lIG1vZGlmaWVkU2luY2UpCiB7CiAgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsID0g
bW9kaWZpZWRTaW5jZS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKTsKICAgICBOU0RhdGUg
KmRhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnRpbWVJbnRlcnZh
bF07Ci0KLSAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURhdGUoc2Vzc2lvbi5wbGF0
Zm9ybVNlc3Npb24oKSwgKF9fYnJpZGdlIENGRGF0ZVJlZilkYXRlKTsKKyNpZiBIQVZFKEhTVFNf
U1RPUkFHRSkKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3
b3JrU2Vzc2lvbkNvY29hKj4odGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkpCisgICAg
ICAgIFtuZXR3b3JrU2Vzc2lvbi0+aHN0c1N0b3JhZ2UoKSByZXNldEhTVFNIb3N0c1NpbmNlRGF0
ZTpkYXRlXTsKKyNlbHNlCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQorICAgICAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURhdGUoc2Vz
c2lvbi0+cGxhdGZvcm1TZXNzaW9uKCksIChfX2JyaWRnZSBDRkRhdGVSZWYpZGF0ZSk7CisjZW5k
aWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9k
aWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDI2MzgwOCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiBPQkpDX0NMQVNTIE5TT3BlcmF0aW9uUXVldWU7CiBPQkpD
X0NMQVNTIFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZTsKIE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vz
c2lvbldlYlNvY2tldERlbGVnYXRlOworT0JKQ19DTEFTUyBfTlNIU1RTU3RvcmFnZTsKIAogI2lu
Y2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIgpA
QCAtMTA0LDYgKzEwNSw3IEBACiAgICAgdm9pZCB0YXNrU2VydmVyQ29ubmVjdGlvblN1Y2NlZWRl
ZChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOwogICAgIHZvaWQgdGFza0Zh
aWxlZChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOwogICAgIE5TVVJMQ3Jl
ZGVudGlhbCAqc3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlRm9ySG9zdChjb25zdCBTdHJpbmcm
IGhvc3QsIHVpbnQxNl90IHBvcnQpIGNvbnN0OworICAgIF9OU0hTVFNTdG9yYWdlICpoc3RzU3Rv
cmFnZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgp
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjYzODA4KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxMCBAQAogCiAjaW1wb3J0ICJEZXZpY2VNYW5h
Z2VtZW50U29mdExpbmsuaCIKIAorLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNvZnQgbGluayBvbmNl
IHJkYXI6Ly9wcm9ibGVtLzUwMTA5NjMxIGlzIGluIGEgYnVpbGQgYW5kIGJvdHMgYXJlIHVwZGF0
ZWQuCitTT0ZUX0xJTktfRlJBTUVXT1JLKENGTmV0d29yaykKK1NPRlRfTElOS19DTEFTU19PUFRJ
T05BTChDRk5ldHdvcmssIF9OU0hTVFNTdG9yYWdlKQorCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCiBDRlN0cmluZ1JlZiBjb25zdCBXZWJLaXQySFRUUFByb3h5RGVmYXVsdHNLZXkgPSBzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4oQCJXZWJLaXQySFRUUFByb3h5Iik7CkBAIC0xMDkyLDYgKzEw
OTYsMTcgQEAKICAgICByZXR1cm4gbV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmdldChr
ZXkpLmdldCgpOwogfQogCitfTlNIU1RTU3RvcmFnZSAqTmV0d29ya1Nlc3Npb25Db2NvYTo6aHN0
c1N0b3JhZ2UoKSBjb25zdAoreworI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorICAgIE5TVVJMU2Vz
c2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBtX3Nlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uOworICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyByZXNwb25kc1RvU2VsZWN0b3IgY2hlY2sgb25jZSByZGFyOi8vcHJvYmxlbS81MDEw
OTYzMSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgorICAgIGlmIChbY29uZmln
dXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9oc3RzU3RvcmFnZSldKQorICAg
ICAgICByZXR1cm4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCku
Y29uZmlndXJhdGlvbi5faHN0c1N0b3JhZ2U7CisjZW5kaWYKKyAgICByZXR1cm4gbmlsOworfQor
CiBjb25zdCBTdHJpbmcmIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmJvdW5kSW50ZXJmYWNlSWRlbnRp
ZmllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwpA
QCAtMTE3Miw2ICsxMTg3LDE1IEBACiAKICAgICBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbkZvclNlc3Npb25JRChtX3Nlc3Npb25JRCk7CiAK
KyNpZiBIQVZFKEhTVFNfU1RPUkFHRSkKKyAgICBpZiAoISFwYXJhbWV0ZXJzLmhzdHNTdG9yYWdl
RGlyZWN0b3J5ICYmICFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7CisgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHJl
c3BvbmRzVG9TZWxlY3RvciBjaGVjayBvbmNlIHJkYXI6Ly9wcm9ibGVtLzUwMTA5NjMxIGlzIGlu
IGEgYnVpbGQgYW5kIGJvdHMgYXJlIHVwZGF0ZWQuCisgICAgICAgIGlmIChbY29uZmlndXJhdGlv
biByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9oc3RzU3RvcmFnZSldKQorICAgICAgICAg
ICAgY29uZmlndXJhdGlvbi5faHN0c1N0b3JhZ2UgPSBbW2FsbG9jX05TSFNUU1N0b3JhZ2VJbnN0
YW5jZSgpIGluaXRQZXJzaXN0ZW50U3RvcmVXaXRoVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
cGFyYW1ldGVycy5oc3RzU3RvcmFnZURpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVNdXSBhdXRvcmVs
ZWFzZV07CisgICAgfQorI2VuZGlmCisKICNpZiBIQVZFKEFQUF9TU08pIHx8IFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIGNvbmZpZ3VyYXRpb24uX3ByZXZlbnRzQXBwU1NPID0gdHJ1ZTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHJldmlzaW9uIDI2MzgwOCkKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NCwyMSArOTQsMjMgQEAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
LnV0ZjgoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0SG9zdE5hbWVzV2l0aEhTVFND
YWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBIYXNo
U2V0PFN0cmluZz4mIGhvc3ROYW1lcykKK0hhc2hTZXQ8U3RyaW5nPiBOZXR3b3JrUHJvY2Vzczo6
aG9zdE5hbWVzV2l0aEhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0CiB7
Ci0gICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291
cCo+KG5ldHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CisgICAgSGFz
aFNldDxTdHJpbmc+IGhvc3ROYW1lczsKKyAgICBjb25zdCBhdXRvKiBzZXNzaW9uID0gc3RhdGlj
X2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSk7CiAg
ICAgc2Vzc2lvbi0+c291cE5ldHdvcmtTZXNzaW9uKCkuZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNo
ZShob3N0TmFtZXMpOworICAgIHJldHVybiBob3N0TmFtZXM7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdE5hbWVz
KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykKIHsK
LSAgICBjb25zdCBhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3Vw
Kj4obmV0d29ya1Nlc3Npb24oc3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKKyAgICBjb25z
dCBhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwKj4obmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSk7CiAgICAgc2Vzc2lvbi0+c291cE5ldHdvcmtTZXNzaW9uKCku
ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKGhvc3ROYW1lcyk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c3RvcmFnZVNlc3Npb24sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjbGVhckhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UpCiB7Ci0gICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5l
dHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25J
RCgpKSk7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNz
aW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpOwogICAgIHNlc3Npb24tPnNvdXBO
ZXR3b3JrU2Vzc2lvbigpLmNsZWFySFNUU0NhY2hlKG1vZGlmaWVkU2luY2UpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRl
eHRQcml2YXRlTWFjLmgJKHJldmlzaW9uIDI2MzgwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKICNkZWZpbmUgV0tDb250ZXh0UHJpdmF0ZU1hY19oCiAKICNpbmNsdWRlIDxX
ZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS1BsdWdpbkxvYWRQb2xpY3kuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBA
IC00MywxMSArNDQsOSBAQAogdHlwZWRlZiB2b2lkICheV0tDb250ZXh0R2V0SW5mb0Zvckluc3Rh
bGxlZFBsdWdJbnNCbG9jaykoV0tBcnJheVJlZiwgV0tFcnJvclJlZik7CiBXS19FWFBPUlQgdm9p
ZCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucyhXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnNCbG9jayBibG9jayk7CiAKLVdL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJlZiBjb250ZXh0
KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJlZiBj
b250ZXh0KSBXS19DX0FQSV9ERVBSRUNBVEVEOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UmVz
ZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShXS0NvbnRleHRSZWYgY29udGV4dCwgZG91YmxlIHN0
YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi0vLyBUaGUg
dGltZSBoZXJlIGlzIHJlbGF0aXZlIHRvIHRoZSBVbml4IGVwb2NoLgotV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShXS0NvbnRleHRSZWYgY29udGV4
dCwgZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKTsKLQogV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0UmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFVucmVn
aXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJp
bmdSZWYgc2NoZW1lKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFj
L1dLQ29udGV4dFByaXZhdGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0JKHJldmlzaW9uIDI2MzgwOCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTQgKzEwMSwxMiBAQAogI2VuZGlmCiB9CiAKLXZv
aWQgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHMoV0tDb250ZXh0UmVmIGNvbnRleHQpCit2b2lkIFdL
Q29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0
Ojp0b0ltcGwoY29udGV4dCktPnJlc2V0SFNUU0hvc3RzKCk7CiB9CiAKLXZvaWQgV0tDb250ZXh0
UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShXS0NvbnRleHRSZWYgY29udGV4dCwgZG91Ymxl
IHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKQordm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0
c0FkZGVkQWZ0ZXJEYXRlKFdLQ29udGV4dFJlZiwgZG91YmxlKQogewotICAgIHJldHVybiBXZWJL
aXQ6OnRvSW1wbChjb250ZXh0KS0+cmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShzdGFydERh
dGVJbnRlcnZhbFNpbmNlMTk3MCk7CiB9CiAKIHZvaWQgV0tDb250ZXh0UmVnaXN0ZXJTY2hlbWVG
b3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1l
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYzODA4KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBACiBAcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCB1c2VzV2ViUHJvY2Vzc0NhY2hlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTQuNCksIGlvcygxMi4yKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBwYWdlQ2Fj
aGVFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc0pJVEVuYWJsZWQpIEJPT0wgSklURW5hYmxlZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwotQHByb3BlcnR5IChu
b25hdG9taWMsIG51bGxhYmxlLCBjb3B5LCBzZXR0ZXI9c2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnk6
KSBOU1VSTCAqaHN0c1N0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
NSksIGlvcygxMy4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHksIHNl
dHRlcj1zZXRIU1RTU3RvcmFnZURpcmVjdG9yeTopIE5TVVJMICpoc3RzU3RvcmFnZURpcmVjdG9y
eSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeSIsIG1hY29zKDEwLjE1LCBXS19NQUNf
VEJBKSwgaW9zKDEzLjAsIFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgY29uZmlndXJlSlNDRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYzODA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDYgKzcyLDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1VJbnRlZ2Vy
IHRlc3RTcGVlZE11bHRpcGxpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHN1cHByZXNzZXND
b25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgYWxsb3dzU2VydmVyUHJlY29ubmVjdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBj
b3B5LCBzZXR0ZXI9c2V0SFNUU1N0b3JhZ2VEaXJlY3Rvcnk6KSBOU1VSTCAqaHN0c1N0b3JhZ2VE
aXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1VSTCAqYWx0
ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjYzODA4KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsNiArMjkwLDE5IEBACiAgICAgX2NvbmZpZ3VyYXRpb24t
PnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCistIChOU1VSTCAq
KWhzdHNTdG9yYWdlRGlyZWN0b3J5Cit7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6X2NvbmZpZ3VyYXRpb24tPmhzdHNTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVT
XTsKK30KKworLSAodm9pZClzZXRIU1RTU3RvcmFnZURpcmVjdG9yeTooTlNVUkwgKil1cmwKK3sK
KyAgICBpZiAoIV9jb25maWd1cmF0aW9uLT5pc1BlcnNpc3RlbnQoKSkKKyAgICAgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkNhbm5vdCBz
ZXQgaHN0c1N0b3JhZ2VEaXJlY3Rvcnkgb24gYSBub24tcGVyc2lzdGVudCBfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi4iXTsKKyAgICBjaGVja1VSTEFyZ3VtZW50KHVybCk7CisgICAg
X2NvbmZpZ3VyYXRpb24tPnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KHVybC5wYXRoKTsKK30KKwog
LSAoTlNVUkwgKilhbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeQogewogICAgIHJl
dHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0aW9uLT5hbHRlcm5hdGl2ZVNl
cnZpY2VzRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNp
b24gMjYzODA4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzI4LDE4ICs3MjgsNiBAQAogICAgIFtbTlNO
b3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9hY3RpdmF0
aW9uT2JzZXJ2ZXIuZ2V0KCldOwogfQogCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBw
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKLXsKLSAgICBzdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiBzZXNzaW9uOwotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKLSAgICBkaXNw
YXRjaF9vbmNlKCZvbmNlLCBeewotICAgICAgICBOU1N0cmluZyAqaWRlbnRpZmllciA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAuUHJpdmF0ZUJyb3dzaW5nIiwgW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXV07Ci0gICAgICAgIHNlc3Npb24gPSBjcmVhdGVQ
cml2YXRlU3RvcmFnZVNlc3Npb24oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWlkZW50aWZpZXIpOwot
ICAgIH0pOwotCi0gICAgcmV0dXJuIHNlc3Npb247Ci19Ci0KIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
OmlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3QKIHsKICAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5nKS5jcmVhdGVD
RlVSTCgpOwpAQCAtNzQ3LDE5ICs3MzUsNiBAQAogICAgIHJldHVybiBfQ0ZOZXR3b3JrSXNLbm93
bkhTVFNIb3N0V2l0aFNlc3Npb24odXJsLmdldCgpLCBudWxscHRyKTsKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cmVzZXRIU1RTSG9zdHMoKQotewotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNI
b3N0c1dpdGhTZXNzaW9uKG51bGxwdHIpOwotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1dp
dGhTZXNzaW9uKHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoZG91YmxlIHN0YXJ0RGF0ZUludGVy
dmFsU2luY2UxOTcwKQotewotICAgIE5TRGF0ZSAqc3RhcnREYXRlID0gW05TRGF0ZSBkYXRlV2l0
aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MF07Ci0gICAg
X0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKG51bGxwdHIsIChfX2JyaWRnZSBDRkRh
dGVSZWYpc3RhcnREYXRlKTsKLSAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURhdGUo
cHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVmKXN0YXJ0RGF0ZSk7
Ci19Ci0KICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZF
Ul9CTE9DS0lORykKIE9wdGlvbmFsPHVuc2lnbmVkPiBXZWJQcm9jZXNzUG9vbDo6bm9taW5hbEZy
YW1lc1BlclNlY29uZEZvckRpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShy
ZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjIsOCArNDIyLDYgQEAKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpNZXNzYWdlTmFtZSk7CiAKICAgICBib29sIGlz
VVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3Q7Ci0gICAgdm9p
ZCByZXNldEhTVFNIb3N0cygpOwotICAgIHZvaWQgcmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0
ZShkb3VibGUgc3RhcnREYXRlSW50ZXJ2YWxTaW5jZTE5NzApOwogCiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJHbG9iYWxVUkxTY2hlbWVBc0hhdmluZ0N1c3RvbVByb3RvY29sSGFuZGxlcnMoY29u
c3QgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgdW5yZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFz
SGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCShyZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDYg
KzIzMiw4IEBACiAgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9j
b25maWd1cmF0aW9uLT5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKSk7CiAgICAg
aWYgKCFtX2NvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSAm
JiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0
eSgpKQogICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmNh
Y2hlU3RvcmFnZURpcmVjdG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmhzdHNT
dG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0eSgpICYmIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5o
c3RzU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24tPnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KHJlc29sdmVQYXRoRm9yU2FuZGJveEV4
dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmhzdHNTdG9yYWdlRGlyZWN0b3J5KCkpKTsKIAogICAg
IC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgZm9yIGZpbGUgcGF0aHMuCiAgICAgaWYgKCFtX2NvbmZp
Z3VyYXRpb24tPmNvb2tpZVN0b3JhZ2VGaWxlKCkuaXNFbXB0eSgpKSB7CkBAIC0yMjU5LDYgKzIy
NjEsMTEgQEAKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShu
ZXR3b3JrQ2FjaGVEaXJlY3RvcnksIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CiAKKyAgICBhdXRvIGhzdHNTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRIU1RTU3RvcmFn
ZURpcmVjdG9yeSgpOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoc3RzU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGhzdHNTdG9yYWdlRGlyZWN0b3J5LCBoc3RzU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CisKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBmYWxzZTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6
OkFsbEJ1dENvb2tpZXM7CkBAIC0yMzAwLDYgKzIzMDcsOCBAQAogICAgIG5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNG
b3JUZXN0aW5nID0gbV9jb25maWd1cmF0aW9uLT5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFn
ZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKCk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IFdURk1vdmUobmV0d29ya0NhY2hlRGlyZWN0b3J5
KTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOworICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5oc3RzU3RvcmFnZURpcmVjdG9yeSA9
IFdURk1vdmUoaHN0c1N0b3JhZ2VEaXJlY3RvcnkpOworICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5oc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoaHN0c1N0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5kYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0gbV9jb25maWd1cmF0aW9uLT5kYXRhQ29u
bmVjdGlvblNlcnZpY2VUeXBlKCk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmZhc3RT
ZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkID0gbV9jb25maWd1cmF0aW9uLT5mYXN0U2VydmVy
VHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCgpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5u
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkID0gbV9jb25maWd1cmF0aW9u
LT5uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCShyZXZpc2lvbiAyNjM4MDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw2ICsyMjQs
NyBAQAogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRJbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24tPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsgfQogICAgIGNvbnN0
IFN0cmluZyYgcmVzb2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRIU1RTU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5oc3RzU3RvcmFn
ZURpcmVjdG9yeSgpOyB9CiAKICAgICBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSYgZGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2UoKSB7IHJldHVybiBtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmdldCgp
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHJl
dmlzaW9uIDI2MzgwOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsOSAr
NjcsNyBAQAogICAgIGNvcHktPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5t
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSA9IHRoaXMtPm1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeTsKICAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLSNpZiBVU0UoR0xJQikKICAgICBjb3B5LT5tX2hzdHNT
dG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9oc3RzU3RvcmFnZURpcmVjdG9yeTsKLSNlbmRpZgog
ICAgIGNvcHktPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9sb2NhbFN0b3JhZ2VE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fYWx0ZXJuYXRpdmVTZXJ2
aWNlc0RpcmVjdG9yeSA9IHRoaXMtPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjYzODA4
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTAgKzY2LDEwIEBACiAKICAg
ICBjb25zdCBTdHJpbmcmIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnkg
PSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KLSNpZiBVU0UoR0xJQikgLy8gQWNjb3JkaW5nIHRvIHIy
NDUwNzUgdGhpcyB3aWxsIGV2ZW50dWFsbHkgbW92ZSBoZXJlLgorCiAgICAgY29uc3QgU3RyaW5n
JiBoc3RzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faHN0c1N0b3JhZ2VEaXJl
Y3Rvcnk7IH0KICAgICB2b2lkIHNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVj
dG9yeSkgeyBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9Ci0j
ZW5kaWYKKwogICAgIGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldExvY2FsU3Rv
cmFnZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KIApAQCAtMTc0LDggKzE3NCw4IEBACiAgICAgU3Ry
aW5nIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKICAgICBTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeTsKKyAgICBTdHJpbmcgbV9oc3RzU3RvcmFnZURpcmVjdG9yeTsKICNpZiBVU0UoR0xJ
QikKLSAgICBTdHJpbmcgbV9oc3RzU3RvcmFnZURpcmVjdG9yeTsKICAgICBib29sIG1fbmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCB7IHRydWUgfTsKICNlbHNlCiAgICAg
Ym9vbCBtX25ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407124</attachid>
            <date>2020-08-24 12:52:52 -0700</date>
            <delta_ts>2020-08-24 13:24:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213048-20200824125252.patch</filename>
            <type>text/plain</type>
            <size>38317</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA4LTI0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwog
MjAyMC0wOC0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIEFkZCBJbnRsLlNlZ21lbnRlcgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlz
aW9uIDI2NjA4MykKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MTEsNiArNDExLDEzIEBACiAjZGVmaW5lIEhBVkVfQlJPS0VOX0RPV05MT0FEX1JF
U1VNRV9VTkxJTksgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgXAorICAgIHx8ICgoUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDE0MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENI
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDcwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQ
UExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKQorI2RlZmlu
ZSBIQVZFX0hTVFNfU1RPUkFHRSAxCisjZW5kaWYKKwogI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKSB8fCAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKQog
I2RlZmluZSBIQVZFX0NGTkVUV09SS19NRVRSSUNTX0FQSVNfVjQgMQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wOC0yNCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2Ug
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gU1BJIGZvciBIU1RTIHN0b3JhZ2UgdG8g
cmVwbGFjZSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaHN0c1N0b3JhZ2VEaXJlY3RvcnkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzA0OAor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBwYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oOgorCiAyMDIwLTA4LTIwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFdlYiBwYWdlcyBhcmUgbm90IHJlc3Bv
bmRpbmcgY29ycmVjdGx5IHRvIGNoYW5nZXMgaW4gIlJlZHVjZSBtb3Rpb24iIHNldHRpbmcKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCShyZXZp
c2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDYgKzIyOCw5IEBAIHR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIE5TVVJMU2Vzc2lvbkMKIEBwcm9wZXJ0eSAobnVsbGFibGUsIHJldGFpbikgX05T
SFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlICpfYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3Jh
Z2U7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSwgYXNzaWduKSBCT09MIF9hbGxvd3NIVFRQMzsKICNl
bmRpZgorI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorQHByb3BlcnR5IChudWxsYWJsZSwgcmV0YWlu
KSBfTlNIU1RTU3RvcmFnZSAqX2hzdHNTdG9yYWdlOworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZh
Y2UgTlNVUkxTZXNzaW9uVGFzayAoKQpAQCAtMzAzLDYgKzMwNiwxNiBAQCBlbnVtIDogTlNVSW50
ZWdlciB7CiBAZW5kCiAjZW5kaWYKIAorI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorQGludGVyZmFj
ZSBfTlNIU1RTU3RvcmFnZSA6IE5TT2JqZWN0CistKGluc3RhbmNldHlwZSlpbml0UGVyc2lzdGVu
dFN0b3JlV2l0aFVSTDoobnVsbGFibGUgTlNVUkwqKXBhdGg7CistKEJPT0wpc2hvdWxkUHJvbW90
ZUhvc3RUb0hUVFBTOihOU1N0cmluZyAqKWhvc3Q7CistKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilu
b25QcmVsb2FkZWRIb3N0czsKKy0odm9pZClyZXNldEhTVFNGb3JIb3N0OihOU1N0cmluZyAqKWhv
c3Q7CistKHZvaWQpcmVzZXRIU1RTSG9zdHNTaW5jZURhdGU6KE5TRGF0ZSAqKWRhdGU7CitAZW5k
CisjZW5kaWYKKwogI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCiAKICNlbmRpZiAvLyBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQpAQCAtMzk1LDEyICs0MDgsMTQgQEAgQ0ZOX0VYUE9SVCB2b2lk
IF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9ucwogQ0ZEYXRhUmVmIF9DRk5ldHdvcmtDb3B5QVRTQ29u
dGV4dCh2b2lkKTsKIEJvb2xlYW4gX0NGTmV0d29ya1NldEFUU0NvbnRleHQoQ0ZEYXRhUmVmKTsK
IAorI2lmICFIQVZFKEhTVFNfU1RPUkFHRSkKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NG
TmV0d29ya0hTVFNQcmVsb2FkZWQ7CiBDRkRpY3Rpb25hcnlSZWYgX0NGTmV0d29ya0NvcHlIU1RT
UG9saWNpZXMoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CiB2b2lkIF9DRk5ldHdvcmtSZXNldEhT
VFMoQ0ZVUkxSZWYsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwogdm9pZCBfQ0ZOZXR3b3JrUmVz
ZXRIU1RTSG9zdHNTaW5jZURhdGUoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZEYXRlUmVmKTsK
IEJvb2xlYW4gX0NGTmV0d29ya0lzS25vd25IU1RTSG9zdFdpdGhTZXNzaW9uKENGVVJMUmVmLCBD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKIHZvaWQgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzV2l0
aFNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CisjZW5kaWYKIAogQ0ZEYXRhUmVmIENG
SFRUUENvb2tpZVN0b3JhZ2VDcmVhdGVJZGVudGlmeWluZ0RhdGEoQ0ZBbGxvY2F0b3JSZWYgaW5B
bGxvY2F0b3IsIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgaW5TdG9yYWdlKTsKIENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWYgQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0ZUZyb21JZGVudGlmeWluZ0RhdGEo
Q0ZBbGxvY2F0b3JSZWYgaW5BbGxvY2F0b3IsIENGRGF0YVJlZiBpbkRhdGEpOwpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjAtMDgtMjQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIF9XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uIFNQSSBmb3IgSFNUUyBzdG9yYWdlIHRvIHJlcGxhY2UgX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFRoaXMgdXNlcyBDRk5ldHdvcmsgU1BJIGlu
dHJvZHVjZWQgaW4gcmRhcjovL3Byb2JsZW0vNTAxMDk2MzEgdG8gYWxsb3cgSFNUUyBzdG9yYWdl
IHBlciBOU1VSTFNlc3Npb24uCisgICAgICAgIFRvIGJlIGNvbXBsZXRlLCBJIGFsc28gZGVwcmVj
YXRlZCBvdXIgVUkgcHJvY2VzcyBIU1RTIHN0YXRlIHJlbW92YWwgYXR0ZW1wdCBTUElzLCBXS0Nv
bnRleHRSZXNldEhTVFNIb3N0cyBhbmQKKyAgICAgICAgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHNB
ZGRlZEFmdGVyRGF0ZSwgd2hpY2ggaGFkIHRoZWlyIGxhc3QgdXNlIHJlbW92ZWQgaW4gcmRhcjov
L3Byb2JsZW0vNjQyMjA4MzguCisKKyAgICAgICAgSSBtYW51YWxseSB2ZXJpZmllZCB0aGF0IHRo
aXMgbmV3IFNQSSBwdXRzIEhTVFMgZGF0YSBpbiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLCBhbmQg
SSBhbHNvIHZlcmlmaWVkIHRoYXQgSFNUUworICAgICAgICBzdGF0ZSBxdWVyeWluZyBhbmQgcmVt
b3ZhbCB3b3JrcyB3aXRoIHRoZSBuZXcgQ0ZOZXR3b3JrIFNQSSBhcyBpdCBkaWQgd2l0aCB0aGUg
b2xkIG9uZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0
ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9y
SG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0Nh
Y2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhI
U1RTQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpo
c3RzU3RvcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhv
c3ROYW1lc1dpdGhIU1RTQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbToKKyAgICAgICAgKFdLQ29udGV4
dFJlc2V0SFNUU0hvc3RzKToKKyAgICAgICAgKFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRB
ZnRlckRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGhzdHNTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAg
ICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEhTVFNTdG9yYWdlRGlyZWN0
b3J5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
OgorICAgICAgICAoV2ViS2l0Ojpwcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0SFNUU0hvc3RzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0SFNUU0hvc3RzQWRkZWRBZnRl
ckRhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZEhTVFNTdG9yYWdlRGlyZWN0
b3J5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisKIDIwMjAtMDgtMjQgIEFkaXR5
YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gU2hvdyBw
aWNrZXIgZm9yIGRhdGUgYW5kIGRhdGV0aW1lLWxvY2FsIGlucHV0IHR5cGVzCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NTMsMTAgKzE1NTMsOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBCiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShTT1VQKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIGdldEhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwotICAgIH0KKyAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkp
CisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRo
SFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTE2MTUsMTAgKzE2MTMsOCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2Us
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNP
VVApCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpI
U1RTQ2FjaGUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgY2xlYXJIU1RTQ2FjaGUoKm5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiwgbW9kaWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGlmICh3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKKyAgICAg
ICAgY2xlYXJIU1RTQ2FjaGUoc2Vzc2lvbklELCBtb2RpZmllZFNpbmNlKTsKICNlbmRpZgogCiAg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDb29raWVz
KSkgewpAQCAtMTcyMCwxMCArMTcxNiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm8KICAgICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCi0g
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2Fj
aGUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5h
bWVzKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIEhTVFNDYWNoZUhvc3ROYW1lcyk7Ci0gICAgfQor
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0Nh
Y2hlKSkKKyAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKHNlc3Npb25JRCwgSFNU
U0NhY2hlSG9zdE5hbWVzKTsKICNlbmRpZgogCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJ
VkVfU0VSVklDRSkKQEAgLTE4OTEsMTUgKzE4ODUsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlQW5kUmVzdHJpY3RXZQogICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lc1dpdGhIU1RT
VG9EZWxldGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJz
aXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAg
ICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vz
c2lvbklEKSkgewotICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKLSAgICAgICAgICAgIGhv
c3RuYW1lc1dpdGhIU1RTVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9t
YWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUpOworICAgICAgICBob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gdGhpcy0+aG9zdE5hbWVz
V2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOworICAgICAgICBob3N0bmFtZXNXaXRoSFNUU1RvRGVs
ZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNv
b2tpZVdlYnNpdGVEYXRhRm9yLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKIAotICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSkKLSAg
ICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSkKKyAgICAgICAgICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOwogCi0gICAgICAgICAgICBkZWxldGVIU1RTQ2Fj
aGVGb3JIb3N0TmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgaG9zdG5hbWVzV2l0aEhTVFNU
b0RlbGV0ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVz
KHNlc3Npb25JRCwgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSk7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTIwODIsMTggKzIwNzQsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVE
b21haW5zVwogICAgICAgICB9KTsKICAgICB9KSk7CiAgICAgCi0gICAgYXV0byYgd2Vic2l0ZURh
dGFTdG9yZSA9IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKKyAgICBhdXRvJiB3
ZWJzaXRlRGF0YSA9IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKICAgICAKICAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRI
b3N0bmFtZXNXaXRoQ29va2llcyh3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVz
KTsKKyAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMod2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aENvb2tpZXMpOwogICAgIH0KICAgICAKICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7Ci0gICAgICAgIGlmIChhdXRv
KiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAg
ICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwotICAgIH0KKyAgICBp
ZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkp
CisgICAgICAgIHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgPSBob3N0TmFtZXNX
aXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CiAjZW5kaWYKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAy
NjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE5NCw5ICsxOTQsOSBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdDsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKLSAgICB2b2lkIGdldEhvc3ROYW1lc1dp
dGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJp
bmc+Jik7Ci0gICAgdm9pZCBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLSAgICB2b2lkIGNs
ZWFySFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UpOworICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXNXaXRoSFNUU0NhY2hl
KFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKKyAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3RO
YW1lcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGNs
ZWFySFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklELCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsKICNl
bmRpZgogCiAgICAgdm9pZCBmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFU
YXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2
aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDgg
QEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIg
PDwgYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29k
ZXIgPDwgaHR0cDNFbmFibGVkOwogI2VuZGlmCisgICAgZW5jb2RlciA8PCBoc3RzU3RvcmFnZURp
cmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8IGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogI2lmIFVTRShTT1VQKQogICAgIGVuY29kZXIgPDwgY29va2llUGVyc2lzdGVudFN0b3Jh
Z2VQYXRoOwogICAgIGVuY29kZXIgPDwgY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOwpAQCAt
MTU0LDYgKzE1NiwxNiBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAorICAgIE9wdGlvbmFsPFN0
cmluZz4gaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgZGVjb2RlciA+PiBoc3RzU3RvcmFnZURp
cmVjdG9yeTsKKyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBo
c3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBkZWNvZGVyID4+IGhzdHNT
dG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGlmICghaHN0c1N0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
CiAjaWYgVVNFKFNPVVApCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb29raWVQZXJzaXN0ZW50U3Rv
cmFnZVBhdGg7CiAgICAgZGVjb2RlciA+PiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CkBA
IC0yODEsNiArMjkzLDggQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cgogICAgICAgICAsIFdURk1vdmUoKmFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSkKICAgICAgICAgLCBXVEZNb3ZlKCpodHRwM0VuYWJsZWQpCiAjZW5kaWYKKyAgICAg
ICAgLCBXVEZNb3ZlKCpoc3RzU3RvcmFnZURpcmVjdG9yeSkKKyAgICAgICAgLCBXVEZNb3ZlKCpo
c3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICNpZiBVU0UoU09VUCkKICAgICAg
ICAgLCBXVEZNb3ZlKCpjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgpCiAgICAgICAgICwgV1RG
TW92ZSgqY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKQpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw4IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGJvb2wgaHR0cDNFbmFibGVkIHsgZmFsc2UgfTsKICNl
bmRpZgorICAgIFN0cmluZyBoc3RzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjaWYgVVNF
KFNPVVApCiAgICAgU3RyaW5nIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBTb3Vw
Q29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSB7
IFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU6OlRleHQgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNz
Q29jb2EubW0JKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYg
KzEzNCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9jZXNzOjpzb3UKICNlbmRp
ZgogfQogCisjaWYgIUhBVkUoSFNUU19TVE9SQUdFKQogc3RhdGljIHZvaWQgZmlsdGVyUHJlbG9h
ZEhTVFNFbnRyeShjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIHZhbHVlLCB2b2lkKiBjb250
ZXh0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQpOwpAQCAtMTUyLDI3ICsxNTMsNTMg
QEAgc3RhdGljIHZvaWQgZmlsdGVyUHJlbG9hZEhTVFNFbnRyeShjb25zdAogICAgIGlmIChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZSh2YWwsIF9rQ0ZOZXR3b3JrSFNUU1ByZWxvYWRlZCkgIT0ga0NGQm9v
bGVhblRydWUpCiAgICAgICAgIGhvc3RuYW1lcy0+YWRkKChDRlN0cmluZ1JlZilrZXkpOwogfQor
I2VuZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4m
IGhvc3ROYW1lcykKK0hhc2hTZXQ8U3RyaW5nPiBOZXR3b3JrUHJvY2Vzczo6aG9zdE5hbWVzV2l0
aEhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0CiB7Ci0gICAgaWYgKGF1
dG8gSFNUU1BvbGljaWVzID0gYWRvcHRDRihfQ0ZOZXR3b3JrQ29weUhTVFNQb2xpY2llcyhzZXNz
aW9uLnBsYXRmb3JtU2Vzc2lvbigpKSkpCi0gICAgICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rp
b24oSFNUU1BvbGljaWVzLmdldCgpLCBmaWx0ZXJQcmVsb2FkSFNUU0VudHJ5LCAmaG9zdE5hbWVz
KTsKKyAgICBIYXNoU2V0PFN0cmluZz4gaG9zdE5hbWVzOworI2lmIEhBVkUoSFNUU19TVE9SQUdF
KQorICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNz
aW9uQ29jb2EqPih0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkgeworICAgICAgICBm
b3IgKE5TU3RyaW5nICpob3N0IGluIG5ldHdvcmtTZXNzaW9uLT5oc3RzU3RvcmFnZSgpLm5vblBy
ZWxvYWRlZEhvc3RzKQorICAgICAgICAgICAgaG9zdE5hbWVzLmFkZChob3N0KTsKKyAgICB9Cisj
ZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkg
eworICAgICAgICBpZiAoYXV0byBIU1RTUG9saWNpZXMgPSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5
SFNUU1BvbGljaWVzKHNlc3Npb24tPnBsYXRmb3JtU2Vzc2lvbigpKSkpCisgICAgICAgICAgICBD
RkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKEhTVFNQb2xpY2llcy5nZXQoKSwgZmlsdGVyUHJlbG9h
ZEhTVFNFbnRyeSwgJmhvc3ROYW1lcyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGhvc3RO
YW1lczsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5h
bWVzKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGhvc3ROYW1lcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNo
ZUZvckhvc3ROYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBob3N0TmFtZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykg
ewotICAgICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgaG9z
dE5hbWUpKTsKLSAgICAgICAgX0NGTmV0d29ya1Jlc2V0SFNUUyh1cmwuY3JlYXRlQ0ZVUkwoKS5n
ZXQoKSwgc2Vzc2lvbi5wbGF0Zm9ybVNlc3Npb24oKSk7CisjaWYgSEFWRShIU1RTX1NUT1JBR0Up
CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Np
b25Db2NvYSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKSB7CisgICAgICAgIGZv
ciAoYXV0byYgaG9zdE5hbWUgOiBob3N0TmFtZXMpCisgICAgICAgICAgICBbbmV0d29ya1Nlc3Np
b24tPmhzdHNTdG9yYWdlKCkgcmVzZXRIU1RTRm9ySG9zdDpob3N0TmFtZV07CiAgICAgfQorI2Vs
c2UKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykgeworICAgICAgICAgICAg
YXV0byB1cmwgPSBVUkwoeyB9LCBtYWtlU3RyaW5nKCJodHRwczovLyIsIGhvc3ROYW1lKSk7Cisg
ICAgICAgICAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTKHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBz
ZXNzaW9uLT5wbGF0Zm9ybVNlc3Npb24oKSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxs
VGltZSBtb2RpZmllZFNpbmNlKQogewogICAgIE5TVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCA9
IG1vZGlmaWVkU2luY2Uuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCk7CiAgICAgTlNEYXRl
ICpkYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDp0aW1lSW50ZXJ2
YWxdOwotCi0gICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKHNlc3Npb24ucGxh
dGZvcm1TZXNzaW9uKCksIChfX2JyaWRnZSBDRkRhdGVSZWYpZGF0ZSk7CisjaWYgSEFWRShIU1RT
X1NUT1JBR0UpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0
d29ya1Nlc3Npb25Db2NvYSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAg
ICAgICBbbmV0d29ya1Nlc3Npb24tPmhzdHNTdG9yYWdlKCkgcmVzZXRIU1RTSG9zdHNTaW5jZURh
dGU6ZGF0ZV07CisjZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24o
c2Vzc2lvbklEKSkKKyAgICAgICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKHNl
c3Npb24tPnBsYXRmb3JtU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVmKWRhdGUpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFz
azsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKIE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vz
c2lvbkRlbGVnYXRlOwogT0JKQ19DTEFTUyBXS05ldHdvcmtTZXNzaW9uV2ViU29ja2V0RGVsZWdh
dGU7CitPQkpDX0NMQVNTIF9OU0hTVFNTdG9yYWdlOwogCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5o
IgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCkBAIC0xMDQsNiArMTA1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgdGFza1NlcnZlckNvbm5lY3Rpb25TdWNjZWVkZWQoTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKICAgICB2b2lkIHRhc2tGYWlsZWQoTmV0d29y
a0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKICAgICBOU1VSTENyZWRlbnRpYWwgKnN1
Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCB1aW50
MTZfdCBwb3J0KSBjb25zdDsKKyAgICBfTlNIU1RTU3RvcmFnZSAqaHN0c1N0b3JhZ2UoKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjgsNiArNjgsMTAgQEAKIAogI2ltcG9ydCAiRGV2aWNlTWFuYWdlbWVudFNvZnRM
aW5rLmgiCiAKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzb2Z0IGxpbmsgb25jZSByZGFyOi8vcHJv
YmxlbS81MDEwOTYzMSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgorU09GVF9M
SU5LX0ZSQU1FV09SSyhDRk5ldHdvcmspCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQ0ZOZXR3
b3JrLCBfTlNIU1RTU3RvcmFnZSkKKwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogQ0ZTdHJp
bmdSZWYgY29uc3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5ID0gc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KEAiV2ViS2l0MkhUVFBQcm94eSIpOwpAQCAtMTA5Nyw2ICsxMTAxLDE3IEBAIE5T
VVJMQ3JlZGVudGlhbCAqTmV0d29ya1Nlc3Npb25Db2NvYTo6c3UKICAgICByZXR1cm4gbV9zdWNj
ZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmdldChrZXkpLmdldCgpOwogfQogCitfTlNIU1RTU3Rv
cmFnZSAqTmV0d29ya1Nlc3Npb25Db2NvYTo6aHN0c1N0b3JhZ2UoKSBjb25zdAoreworI2lmIEhB
VkUoSFNUU19TVE9SQUdFKQorICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3Vy
YXRpb24gPSBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25m
aWd1cmF0aW9uOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyByZXNwb25kc1RvU2VsZWN0b3Ig
Y2hlY2sgb25jZSByZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBpbiBhIGJ1aWxkIGFuZCBib3Rz
IGFyZSB1cGRhdGVkLgorICAgIGlmIChbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF9oc3RzU3RvcmFnZSldKQorICAgICAgICByZXR1cm4gbV9zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbi5faHN0c1N0b3JhZ2U7
CisjZW5kaWYKKyAgICByZXR1cm4gbmlsOworfQorCiBjb25zdCBTdHJpbmcmIE5ldHdvcmtTZXNz
aW9uQ29jb2E6OmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwpAQCAtMTIwMCw2ICsxMjE1LDE1IEBAIE5ldHdv
cmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKIAogICAgIE5TVVJMU2Vzc2lvbkNv
bmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uRm9yU2Vzc2lvbklEKG1f
c2Vzc2lvbklEKTsKIAorI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorICAgIGlmICghIXBhcmFtZXRl
cnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkgJiYgIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsK
KyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMu
aHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgcmVzcG9uZHNUb1NlbGVjdG9yIGNoZWNrIG9uY2UgcmRhcjovL3Byb2JsZW0v
NTAxMDk2MzEgaXMgaW4gYSBidWlsZCBhbmQgYm90cyBhcmUgdXBkYXRlZC4KKyAgICAgICAgaWYg
KFtjb25maWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2hzdHNTdG9yYWdl
KV0pCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLl9oc3RzU3RvcmFnZSA9IFtbYWxsb2NfTlNI
U1RTU3RvcmFnZUluc3RhbmNlKCkgaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6W05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5IGlzRGlyZWN0b3J5
OllFU11dIGF1dG9yZWxlYXNlXTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEhBVkUoQVBQX1NTTykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY29uZmlndXJhdGlvbi5fcHJldmVudHNBcHBT
U08gPSB0cnVlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkocmV2aXNpb24gMjY2MDgz
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDIxICs5NCwyMyBAQCBzdGF0aWMgQ1N0cmluZyBi
dWlsZEFjY2VwdExhbmd1YWdlcyhjb25zCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKS51
dGY4KCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgSGFzaFNl
dDxTdHJpbmc+JiBob3N0TmFtZXMpCitIYXNoU2V0PFN0cmluZz4gTmV0d29ya1Byb2Nlc3M6Omhv
c3ROYW1lc1dpdGhIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdAogewot
ICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAq
PihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOworICAgIEhhc2hT
ZXQ8U3RyaW5nPiBob3N0TmFtZXM7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19j
YXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpOwogICAg
IHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUo
aG9zdE5hbWVzKTsKKyAgICByZXR1cm4gaG9zdE5hbWVzOwogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMpCiB7Ci0g
ICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+
KG5ldHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CisgICAgY29uc3Qg
YXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCkpOwogICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmRl
bGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhob3N0TmFtZXMpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjbGVhckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0
b3JhZ2VTZXNzaW9uLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQordm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSBtb2Rp
ZmllZFNpbmNlKQogewotICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3
b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQo
KSkpOworICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lv
blNvdXAqPihuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICBzZXNzaW9uLT5zb3VwTmV0
d29ya1Nlc3Npb24oKS5jbGVhckhTVFNDYWNoZShtb2RpZmllZFNpbmNlKTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjYwODMp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MzQsOCArNDM0LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lKTsKIAogICAgIGJvb2wgaXNVUkxLbm93
bkhTVFNIb3N0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKLSAgICB2b2lkIHJlc2V0
SFNUU0hvc3RzKCk7Ci0gICAgdm9pZCByZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKGRvdWJs
ZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7CiAKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJp
bmcmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdD
dXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5o
CShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tDb250ZXh0UHJpdmF0ZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIFdLQ29udGV4dFByaXZhdGVNYWNfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5o
PgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQ
bHVnaW5Mb2FkUG9saWN5Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtNDMsMTAgKzQ0LDgg
QEAgV0tfRVhQT1JUIFdLRGljdGlvbmFyeVJlZiBXS0NvbnRleHRDb3B5UAogdHlwZWRlZiB2b2lk
ICheV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnNCbG9jaykoV0tBcnJheVJlZiwg
V0tFcnJvclJlZik7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVk
UGx1Z0lucyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxl
ZFBsdWdJbnNCbG9jayBibG9jayk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0SFNU
U0hvc3RzKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKLQotLy8gVGhlIHRpbWUgaGVyZSBpcyByZWxh
dGl2ZSB0byB0aGUgVW5peCBlcG9jaC4KLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0SFNU
U0hvc3RzQWRkZWRBZnRlckRhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIGRvdWJsZSBzdGFydERh
dGVJbnRlcnZhbFNpbmNlMTk3MCk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZXNldEhTVFNI
b3N0cyhXS0NvbnRleHRSZWYgY29udGV4dCkgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoV0tDb250ZXh0UmVm
IGNvbnRleHQsIGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCkgV0tfQ19BUElfREVQ
UkVDQVRFRDsKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UmVnaXN0ZXJTY2hlbWVGb3JDdXN0
b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKTsKIFdL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dFVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRl
TWFjLm1tCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDE0ICsx
MDEsMTIgQEAgdm9pZCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucwogI2VuZGlm
CiB9CiAKLXZvaWQgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHMoV0tDb250ZXh0UmVmIGNvbnRleHQp
Cit2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJlZikKIHsKLSAgICByZXR1
cm4gV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnJlc2V0SFNUU0hvc3RzKCk7CiB9CiAKLXZvaWQg
V0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShXS0NvbnRleHRSZWYgY29udGV4
dCwgZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKQordm9pZCBXS0NvbnRleHRSZXNl
dEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKFdLQ29udGV4dFJlZiwgZG91YmxlKQogewotICAgIHJl
dHVybiBXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+cmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0
ZShzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7CiB9CiAKIHZvaWQgV0tDb250ZXh0UmVnaXN0
ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdS
ZWYgc2NoZW1lKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24g
MjY2MDgzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIFdLX0NM
QVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
KSBCT09MIHVzZXNXZWJQcm9jZXNzQ2FjaGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40
KSwgaW9zKDEyLjIpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHBhZ2VDYWNoZUVuYWJs
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgZ2V0dGVyPWlzSklURW5hYmxlZCkgQk9PTCBKSVRFbmFibGVkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21p
YywgbnVsbGFibGUsIGNvcHksIHNldHRlcj1zZXRIU1RTU3RvcmFnZURpcmVjdG9yeTopIE5TVVJM
ICpoc3RzU3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9z
KDEzLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwgc2V0dGVyPXNl
dEhTVFNTdG9yYWdlRGlyZWN0b3J5OikgTlNVUkwgKmhzdHNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQ
SV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5IiwgbWFjb3MoMTAuMTUsIFdLX01BQ19UQkEpLCBp
b3MoMTMuMCwgV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjb25m
aWd1cmVKU0NGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNzIsNiArNzIsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEu
CiBAcHJvcGVydHkgKG5vbmF0b21pYykgTlNVSW50ZWdlciB0ZXN0U3BlZWRNdWx0aXBsaWVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYykgQk9PTCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25T
eXN0ZW1DaGFuZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbG93c1NlcnZlclByZWNvbm5l
Y3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwgc2V0dGVyPXNldEhTVFNTdG9y
YWdlRGlyZWN0b3J5OikgTlNVUkwgKmhzdHNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNVUkwgKmFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdl
RGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0J
KHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjkw
LDYgKzI5MCwxOSBAQCAtICh2b2lkKXNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk6KE5TCiAg
ICAgX2NvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgp
OwogfQogCistIChOU1VSTCAqKWhzdHNTdG9yYWdlRGlyZWN0b3J5Cit7CisgICAgcmV0dXJuIFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPmhzdHNTdG9yYWdlRGlyZWN0b3J5
KCkgaXNEaXJlY3Rvcnk6WUVTXTsKK30KKworLSAodm9pZClzZXRIU1RTU3RvcmFnZURpcmVjdG9y
eTooTlNVUkwgKil1cmwKK3sKKyAgICBpZiAoIV9jb25maWd1cmF0aW9uLT5pc1BlcnNpc3RlbnQo
KSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u
IGZvcm1hdDpAIkNhbm5vdCBzZXQgaHN0c1N0b3JhZ2VEaXJlY3Rvcnkgb24gYSBub24tcGVyc2lz
dGVudCBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi4iXTsKKyAgICBjaGVja1VSTEFy
Z3VtZW50KHVybCk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5
KHVybC5wYXRoKTsKK30KKwogLSAoTlNVUkwgKilhbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURp
cmVjdG9yeQogewogICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0
aW9uLT5hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQkocmV2aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzU1LDE4ICs3
NTUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyTm90aWZpY2F0CiAgICAgbV9w
b3dlclNvdXJjZU5vdGlmaWVyID0gbnVsbHB0cjsKIH0KIAotc3RhdGljIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgc3RhdGljIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgc2Vzc2lvbjsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7
Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKLSAgICAgICAgTlNTdHJpbmcgKmlkZW50aWZp
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALlByaXZhdGVCcm93c2luZyIsIFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl1dOwotICAgICAgICBzZXNzaW9u
ID0gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpZGVu
dGlmaWVyKTsKLSAgICB9KTsKLQotICAgIHJldHVybiBzZXNzaW9uOwotfQotCiBib29sIFdlYlBy
b2Nlc3NQb29sOjppc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNv
bnN0CiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBVUkwoVVJMKCksIHVybFN0cmlu
ZykuY3JlYXRlQ0ZVUkwoKTsKQEAgLTc3NCwxOSArNzYyLDYgQEAgYm9vbCBXZWJQcm9jZXNzUG9v
bDo6aXNVUkxLbm93bkhTVFNIb3N0KAogICAgIHJldHVybiBfQ0ZOZXR3b3JrSXNLbm93bkhTVFNI
b3N0V2l0aFNlc3Npb24odXJsLmdldCgpLCBudWxscHRyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cmVzZXRIU1RTSG9zdHMoKQotewotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1dp
dGhTZXNzaW9uKG51bGxwdHIpOwotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1dpdGhTZXNz
aW9uKHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2lu
Y2UxOTcwKQotewotICAgIE5TRGF0ZSAqc3RhcnREYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJ
bnRlcnZhbFNpbmNlMTk3MDpzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MF07Ci0gICAgX0NGTmV0
d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKG51bGxwdHIsIChfX2JyaWRnZSBDRkRhdGVSZWYp
c3RhcnREYXRlKTsKLSAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURhdGUocHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVmKXN0YXJ0RGF0ZSk7Ci19Ci0K
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9D
S0lORykKIE9wdGlvbmFsPHVuc2lnbmVkPiBXZWJQcm9jZXNzUG9vbDo6bm9taW5hbEZyYW1lc1Bl
clNlY29uZEZvckRpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQog
ewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzIsNiArMjMyLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGly
ZWN0b3JpZQogICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlwdENv
bmZpZ3VyYXRpb25EaXJlY3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29u
ZmlndXJhdGlvbi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSkpOwogICAgIGlm
ICghbV9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkgJiYg
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHko
KSkKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5oc3RzU3Rv
cmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+aHN0
c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRl
bnNpb24obV9jb25maWd1cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgpKSk7CiAKICAgICAv
LyBSZXNvbHZlIGRpcmVjdG9yaWVzIGZvciBmaWxlIHBhdGhzLgogICAgIGlmICghbV9jb25maWd1
cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkgewpAQCAtMjI4Myw2ICsyMjg1
LDExIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICBpZiAo
IW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnksIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKKyAgICBhdXRvIGhz
dHNTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRIU1RTU3RvcmFnZURpcmVjdG9yeSgpOworICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGhzdHNT
dG9yYWdlRGlyZWN0b3J5LCBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisK
ICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBmYWxzZTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUg
PSBmYWxzZTsKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2Vi
Q29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CkBA
IC0yMzI1LDYgKzIzMzIsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0
YVN0CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNl
TWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgPSBtX2NvbmZpZ3VyYXRpb24tPmFsbExv
YWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKTsKICAg
ICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gV1RGTW92
ZShuZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5u
ZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKG5ldHdvcmtDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LmhzdHNTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShoc3RzU3RvcmFnZURpcmVjdG9yeSk7Cisg
ICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlID0gV1RGTW92ZShoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAg
ICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUgPSBt
X2NvbmZpZ3VyYXRpb24tPmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKTsKICAgICBuZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQgPSBtX2Nv
bmZpZ3VyYXRpb24tPmZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkKCk7CiAgICAgbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVu
YWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPm5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHJl
c29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7IH0KICAgICBjb25z
dCBTdHJpbmcmIHJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1
cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHJlc29sdmVkSFNUU1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi0+aHN0c1N0b3JhZ2VEaXJlY3RvcnkoKTsgfQogCiAgICAgRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UmIGRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkgeyByZXR1cm4g
bV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5nZXQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uPiBXZWJzaQogICAgIGNvcHktPm1faW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNvcHktPm1f
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHRoaXMtPm1fc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKICAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLSNpZiBVU0UoR0xJQikKICAg
ICBjb3B5LT5tX2hzdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9oc3RzU3RvcmFnZURpcmVj
dG9yeTsKLSNlbmRpZgogICAgIGNvcHktPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+
bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1f
YWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSA9IHRoaXMtPm1fYWx0ZXJuYXRpdmVTZXJ2aWNl
c0RpcmVjdG9yeTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAko
cmV2aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTAg
KzY3LDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9CiAgICAg
dm9pZCBzZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQotI2lmIFVTRShH
TElCKSAvLyBBY2NvcmRpbmcgdG8gcjI0NTA3NSB0aGlzIHdpbGwgZXZlbnR1YWxseSBtb3ZlIGhl
cmUuCisKICAgICBjb25zdCBTdHJpbmcmIGhzdHNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9oc3RzU3RvcmFnZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0SFNUU1N0b3JhZ2VE
aXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1faHN0c1N0b3JhZ2VEaXJlY3RvcnkgPSBX
VEZNb3ZlKGRpcmVjdG9yeSk7IH0KLSNlbmRpZgorCiAgICAgY29uc3QgU3RyaW5nJiBsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsg
fQogICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkg
eyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQogCkBAIC0x
NzUsOCArMTc1LDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeTsKICAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
OwogICAgIFN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotI2lmIFVTRShHTElCKQog
ICAgIFN0cmluZyBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5OworI2lmIFVTRShHTElCKQogICAgIGJv
b2wgbV9uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgdHJ1ZSB9Owog
I2Vsc2UKICAgICBib29sIG1fbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZCB7IGZhbHNlIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407126</attachid>
            <date>2020-08-24 13:24:04 -0700</date>
            <delta_ts>2020-08-24 13:35:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213048-20200824132403.patch</filename>
            <type>text/plain</type>
            <size>38506</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA4LTI0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwog
MjAyMC0wOC0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIEFkZCBJbnRsLlNlZ21lbnRlcgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlz
aW9uIDI2NjA4MykKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MTEsNiArNDExLDE0IEBACiAjZGVmaW5lIEhBVkVfQlJPS0VOX0RPV05MT0FEX1JF
U1VNRV9VTkxJTksgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgXAorICAgIHx8ICgoUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDE0MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENI
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDcwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQ
UExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKSBcCisgICAg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjZGVmaW5lIEhBVkVfSFNUU19TVE9SQUdFIDEKKyNl
bmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX01F
VFJJQ1NfQVBJU19WNCAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24g
MjY2MDgzKQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTA4LTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIw
MjAtMDgtMjAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFttYWNPU10gV2ViIHBhZ2VzIGFyZSBub3QgcmVzcG9uZGluZyBjb3JyZWN0bHkgdG8gY2hhbmdl
cyBpbiAiUmVkdWNlIG1vdGlvbiIgc2V0dGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDAsNiArMjAwLDE2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkMK
IEBjbGFzcyBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2U7CiAjZW5kaWYKIAorI2lm
IEhBVkUoSFNUU19TVE9SQUdFKQorQGludGVyZmFjZSBfTlNIU1RTU3RvcmFnZSA6IE5TT2JqZWN0
CistIChpbnN0YW5jZXR5cGUpaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6KG51bGxhYmxlIE5T
VVJMKilwYXRoOworLSAoQk9PTClzaG91bGRQcm9tb3RlSG9zdFRvSFRUUFM6KE5TU3RyaW5nICop
aG9zdDsKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilub25QcmVsb2FkZWRIb3N0czsKKy0gKHZv
aWQpcmVzZXRIU1RTRm9ySG9zdDooTlNTdHJpbmcgKilob3N0OworLSAodm9pZClyZXNldEhTVFNI
b3N0c1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZTsKK0BlbmQKKyNlbmRpZgorCiBAaW50ZXJmYWNl
IE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKCkKIEBwcm9wZXJ0eSAoYXNzaWduKSBfVGltaW5n
RGF0YU9wdGlvbnMgX3RpbWluZ0RhdGFPcHRpb25zOwogQHByb3BlcnR5IChjb3B5KSBOU0RhdGEg
Kl9zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRhOwpAQCAtMjI4LDYgKzIzOCw5IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkMKIEBwcm9wZXJ0eSAobnVsbGFi
bGUsIHJldGFpbikgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlICpfYWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2U7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSwgYXNzaWduKSBCT09MIF9h
bGxvd3NIVFRQMzsKICNlbmRpZgorI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorQHByb3BlcnR5IChu
dWxsYWJsZSwgcmV0YWluKSBfTlNIU1RTU3RvcmFnZSAqX2hzdHNTdG9yYWdlOworI2VuZGlmCiBA
ZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxTZXNzaW9uVGFzayAoKQpAQCAtMzk1LDEyICs0MDgsMTQg
QEAgQ0ZOX0VYUE9SVCB2b2lkIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9ucwogQ0ZEYXRhUmVmIF9D
Rk5ldHdvcmtDb3B5QVRTQ29udGV4dCh2b2lkKTsKIEJvb2xlYW4gX0NGTmV0d29ya1NldEFUU0Nv
bnRleHQoQ0ZEYXRhUmVmKTsKIAorI2lmICFIQVZFKEhTVFNfU1RPUkFHRSkKIGV4dGVybiBjb25z
dCBDRlN0cmluZ1JlZiBfa0NGTmV0d29ya0hTVFNQcmVsb2FkZWQ7CiBDRkRpY3Rpb25hcnlSZWYg
X0NGTmV0d29ya0NvcHlIU1RTUG9saWNpZXMoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CiB2b2lk
IF9DRk5ldHdvcmtSZXNldEhTVFMoQ0ZVUkxSZWYsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOwog
dm9pZCBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURhdGUoQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiwgQ0ZEYXRlUmVmKTsKIEJvb2xlYW4gX0NGTmV0d29ya0lzS25vd25IU1RTSG9zdFdpdGhT
ZXNzaW9uKENGVVJMUmVmLCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKIHZvaWQgX0NGTmV0d29y
a1Jlc2V0SFNUU0hvc3RzV2l0aFNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZik7CisjZW5k
aWYKIAogQ0ZEYXRhUmVmIENGSFRUUENvb2tpZVN0b3JhZ2VDcmVhdGVJZGVudGlmeWluZ0RhdGEo
Q0ZBbGxvY2F0b3JSZWYgaW5BbGxvY2F0b3IsIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgaW5TdG9y
YWdlKTsKIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgQ0ZIVFRQQ29va2llU3RvcmFnZUNyZWF0ZUZy
b21JZGVudGlmeWluZ0RhdGEoQ0ZBbGxvY2F0b3JSZWYgaW5BbGxvY2F0b3IsIENGRGF0YVJlZiBp
bkRhdGEpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjAtMDgtMjQgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtl
IF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIFNQSSBmb3IgSFNUUyBzdG9yYWdlIHRv
IHJlcGxhY2UgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwNDgK
KworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFRoaXMgdXNl
cyBDRk5ldHdvcmsgU1BJIGludHJvZHVjZWQgaW4gcmRhcjovL3Byb2JsZW0vNTAxMDk2MzEgdG8g
YWxsb3cgSFNUUyBzdG9yYWdlIHBlciBOU1VSTFNlc3Npb24uCisgICAgICAgIFRvIGJlIGNvbXBs
ZXRlLCBJIGFsc28gZGVwcmVjYXRlZCBvdXIgVUkgcHJvY2VzcyBIU1RTIHN0YXRlIHJlbW92YWwg
YXR0ZW1wdCBTUElzLCBXS0NvbnRleHRSZXNldEhTVFNIb3N0cyBhbmQKKyAgICAgICAgV0tDb250
ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZSwgd2hpY2ggaGFkIHRoZWlyIGxhc3QgdXNl
IHJlbW92ZWQgaW4gcmRhcjovL3Byb2JsZW0vNjQyMjA4MzguCisKKyAgICAgICAgSSBtYW51YWxs
eSB2ZXJpZmllZCB0aGF0IHRoaXMgbmV3IFNQSSBwdXRzIEhTVFMgZGF0YSBpbiB0aGUgc3BlY2lm
aWVkIGxvY2F0aW9uLCBhbmQgSSBhbHNvIHZlcmlmaWVkIHRoYXQgSFNUUworICAgICAgICBzdGF0
ZSBxdWVyeWluZyBhbmQgcmVtb3ZhbCB3b3JrcyB3aXRoIHRoZSBuZXcgQ0ZOZXR3b3JrIFNQSSBh
cyBpdCBkaWQgd2l0aCB0aGUgb2xkIG9uZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNo
V2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0
ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRh
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhvc3ROYW1l
c1dpdGhIU1RTQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmNsZWFySFNUU0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpoc3RzU3RvcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbToK
KyAgICAgICAgKFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKToKKyAgICAgICAgKFdLQ29udGV4dFJl
c2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW06Cisg
ICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGhzdHNTdG9yYWdlRGly
ZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIHNl
dEhTVFNTdG9yYWdlRGlyZWN0b3J5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojpwcml2YXRlQnJvd3NpbmdTZXNz
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0SFNU
U0hvc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0
SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2
ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZl
ZEhTVFNTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6CisK
IDIwMjAtMDgtMjQgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFttYWNPU10gU2hvdyBwaWNrZXIgZm9yIGRhdGUgYW5kIGRhdGV0aW1lLWxvY2FsIGlucHV0
IHR5cGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAkocmV2aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NTMsMTAgKzE1NTMs
OCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBCiAgICAgfQogCiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQotICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0
byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAg
ICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUpOwotICAgIH0KKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRl
RGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gaG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNz
aW9uSUQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKQEAgLTE2MTUs
MTAgKzE2MTMsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdlYnNpdGVEYXRhKFBBCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFdhbGxU
aW1lIG1vZGlmaWVkU2luY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKFNPVVApCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAg
Y2xlYXJIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgbW9kaWZpZWRTaW5jZSk7Ci0g
ICAgfQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
SFNUU0NhY2hlKSkKKyAgICAgICAgY2xlYXJIU1RTQ2FjaGUoc2Vzc2lvbklELCBtb2RpZmllZFNp
bmNlKTsKICNlbmRpZgogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpDb29raWVzKSkgewpAQCAtMTcyMCwxMCArMTcxNiw4IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm8KICAgICB9CiAKICNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKFNPVVApCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgZGVsZXRl
SFNUU0NhY2hlRm9ySG9zdE5hbWVzKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIEhTVFNDYWNoZUhv
c3ROYW1lcyk7Ci0gICAgfQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKKyAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5h
bWVzKHNlc3Npb25JRCwgSFNUU0NhY2hlSG9zdE5hbWVzKTsKICNlbmRpZgogCiAjaWYgSEFWRShD
Rk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKQEAgLTE4OTEsMTUgKzE4ODUsMTMgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJpY3RXZQogICAgIFZlY3RvcjxTdHJpbmc+
IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShT
T1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0g
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0
aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hl
KTsKLSAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdp
c3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxsTm9uQ29va2llV2Vic2l0ZURhdGFGb3Is
IGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOworICAgICAgICBob3N0TmFtZXNXaXRoSFNUU0NhY2hl
ID0gdGhpcy0+aG9zdE5hbWVzV2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOworICAgICAgICBob3N0
bmFtZXNXaXRoSFNUU1RvRGVsZXRlID0gZmlsdGVyRm9yUmVnaXN0cmFibGVEb21haW5zKGRvbWFp
bnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRhRm9yLCBob3N0TmFtZXNXaXRoSFNUU0Nh
Y2hlKTsKIAotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0
aEhTVFNUb0RlbGV0ZSkKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9t
YWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGhvc3Qp
KTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aEhTVFNUb0Rl
bGV0ZSkKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV9kb21haW5zLmFkZChSZWdp
c3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoaG9zdCkpOwogCi0gICAgICAg
ICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
aG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgZGVsZXRlSFNU
U0NhY2hlRm9ySG9zdE5hbWVzKHNlc3Npb25JRCwgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSk7
CiAgICAgfQogI2VuZGlmCiAKQEAgLTIwODIsMTggKzIwNzQsMTYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVnaXN0cmFibGVEb21haW5zVwogICAgICAgICB9KTsKICAgICB9KSk7CiAgICAgCi0g
ICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRl
RGF0YTsKKyAgICBhdXRvJiB3ZWJzaXRlRGF0YSA9IGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJz
aXRlRGF0YTsKICAgICAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRl
RGF0YVR5cGU6OkNvb2tpZXMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5nZXRIb3N0bmFtZXNXaXRoQ29va2llcyh3ZWJzaXRlRGF0YVN0b3JlLmhv
c3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMod2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aENvb2tpZXMp
OwogICAgIH0KICAgICAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCi0gICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7
Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lv
bihzZXNzaW9uSUQpKQotICAgICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUpOwotICAgIH0KKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAgIHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUgPSBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKHNlc3Npb25JRCk7CiAjZW5kaWYKIAogICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlh
bHMpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw5ICsxOTQsOSBAQCBwdWJs
aWM6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEo
KSBjb25zdDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoU09VUCkKLSAgICB2
b2lkIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgSGFzaFNldDxTdHJpbmc+Jik7Ci0gICAgdm9pZCBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0
TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKLSAgICB2b2lkIGNsZWFySFNUU0NhY2hlKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOworICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0
TmFtZXNXaXRoSFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKKyAgICB2b2lkIGRlbGV0
ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKTsKKyAgICB2b2lkIGNsZWFySFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklELCBXYWxsVGltZSBt
b2RpZmllZFNpbmNlKTsKICNlbmRpZgogCiAgICAgdm9pZCBmaW5kUGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDYgKzU3LDggQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
czo6ZQogICAgIGVuY29kZXIgPDwgYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogICAgIGVuY29kZXIgPDwgaHR0cDNFbmFibGVkOwogI2VuZGlmCisgICAgZW5jb2Rl
ciA8PCBoc3RzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8IGhzdHNTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2lmIFVTRShTT1VQKQogICAgIGVuY29kZXIgPDwgY29v
a2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGVuY29kZXIgPDwgY29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUeXBlOwpAQCAtMTU0LDYgKzE1NiwxNiBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVyCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYK
IAorICAgIE9wdGlvbmFsPFN0cmluZz4gaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgZGVjb2Rl
ciA+PiBoc3RzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlPiBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAg
ICBkZWNvZGVyID4+IGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGlm
ICghaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgCiAjaWYgVVNFKFNPVVApCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBj
b29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAgZGVjb2RlciA+PiBjb29raWVQZXJzaXN0
ZW50U3RvcmFnZVBhdGg7CkBAIC0yODEsNiArMjkzLDggQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcgogICAgICAgICAsIFdURk1vdmUoKmFsdGVybmF0aXZlU2Vydmlj
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAgICAgLCBXVEZNb3ZlKCpodHRwM0VuYWJs
ZWQpCiAjZW5kaWYKKyAgICAgICAgLCBXVEZNb3ZlKCpoc3RzU3RvcmFnZURpcmVjdG9yeSkKKyAg
ICAgICAgLCBXVEZNb3ZlKCpoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICNp
ZiBVU0UoU09VUCkKICAgICAgICAgLCBXVEZNb3ZlKCpjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBh
dGgpCiAgICAgICAgICwgV1RGTW92ZSgqY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKQpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjY2MDgzKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw4IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVycyAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgYWx0ZXJu
YXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGJvb2wgaHR0cDNFbmFi
bGVkIHsgZmFsc2UgfTsKICNlbmRpZgorICAgIFN0cmluZyBoc3RzU3RvcmFnZURpcmVjdG9yeTsK
KyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAjaWYgVVNFKFNPVVApCiAgICAgU3RyaW5nIGNvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlUGF0aDsKICAgICBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlIGNvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlVHlwZSB7IFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU6OlRleHQg
fTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IE5ldHdvcmtQ
cm9jZXNzOjpzb3UKICNlbmRpZgogfQogCisjaWYgIUhBVkUoSFNUU19TVE9SQUdFKQogc3RhdGlj
IHZvaWQgZmlsdGVyUHJlbG9hZEhTVFNFbnRyeShjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQq
IHZhbHVlLCB2b2lkKiBjb250ZXh0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQpOwpA
QCAtMTUyLDI3ICsxNTMsNTMgQEAgc3RhdGljIHZvaWQgZmlsdGVyUHJlbG9hZEhTVFNFbnRyeShj
b25zdAogICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1ZSh2YWwsIF9rQ0ZOZXR3b3JrSFNUU1By
ZWxvYWRlZCkgIT0ga0NGQm9vbGVhblRydWUpCiAgICAgICAgIGhvc3RuYW1lcy0+YWRkKChDRlN0
cmluZ1JlZilrZXkpOwogfQorI2VuZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBIYXNoU2V0PFN0cmluZz4mIGhvc3ROYW1lcykKK0hhc2hTZXQ8U3RyaW5nPiBOZXR3b3JrUHJv
Y2Vzczo6aG9zdE5hbWVzV2l0aEhTVFNDYWNoZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNv
bnN0CiB7Ci0gICAgaWYgKGF1dG8gSFNUU1BvbGljaWVzID0gYWRvcHRDRihfQ0ZOZXR3b3JrQ29w
eUhTVFNQb2xpY2llcyhzZXNzaW9uLnBsYXRmb3JtU2Vzc2lvbigpKSkpCi0gICAgICAgIENGRGlj
dGlvbmFyeUFwcGx5RnVuY3Rpb24oSFNUU1BvbGljaWVzLmdldCgpLCBmaWx0ZXJQcmVsb2FkSFNU
U0VudHJ5LCAmaG9zdE5hbWVzKTsKKyAgICBIYXNoU2V0PFN0cmluZz4gaG9zdE5hbWVzOworI2lm
IEhBVkUoSFNUU19TVE9SQUdFKQorICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHN0YXRp
Y19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPih0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSkgeworICAgICAgICBmb3IgKE5TU3RyaW5nICpob3N0IGluIG5ldHdvcmtTZXNzaW9uLT5o
c3RzU3RvcmFnZSgpLm5vblByZWxvYWRlZEhvc3RzKQorICAgICAgICAgICAgaG9zdE5hbWVzLmFk
ZChob3N0KTsKKyAgICB9CisjZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNl
c3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byBIU1RTUG9saWNpZXMgPSBhZG9w
dENGKF9DRk5ldHdvcmtDb3B5SFNUU1BvbGljaWVzKHNlc3Npb24tPnBsYXRmb3JtU2Vzc2lvbigp
KSkpCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKEhTVFNQb2xpY2llcy5n
ZXQoKSwgZmlsdGVyUHJlbG9hZEhTVFNFbnRyeSwgJmhvc3ROYW1lcyk7CisgICAgfQorI2VuZGlm
CisgICAgcmV0dXJuIGhvc3ROYW1lczsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
SFNUU0NhY2hlRm9ySG9zdE5hbWVzKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBob3N0
TmFtZSA6IGhvc3ROYW1lcykgewotICAgICAgICBhdXRvIHVybCA9IFVSTCh7IH0sIG1ha2VTdHJp
bmcoImh0dHBzOi8vIiwgaG9zdE5hbWUpKTsKLSAgICAgICAgX0NGTmV0d29ya1Jlc2V0SFNUUyh1
cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2Vzc2lvbi5wbGF0Zm9ybVNlc3Npb24oKSk7CisjaWYg
SEFWRShIU1RTX1NUT1JBR0UpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gc3RhdGlj
X2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgaG9zdE5hbWUgOiBob3N0TmFtZXMpCisgICAgICAg
ICAgICBbbmV0d29ya1Nlc3Npb24tPmhzdHNTdG9yYWdlKCkgcmVzZXRIU1RTRm9ySG9zdDpob3N0
TmFtZV07CiAgICAgfQorI2Vsc2UKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IHN0b3JhZ2VTZXNz
aW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1l
cykgeworICAgICAgICAgICAgYXV0byB1cmwgPSBVUkwoeyB9LCBtYWtlU3RyaW5nKCJodHRwczov
LyIsIGhvc3ROYW1lKSk7CisgICAgICAgICAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTKHVybC5jcmVh
dGVDRlVSTCgpLmdldCgpLCBzZXNzaW9uLT5wbGF0Zm9ybVNlc3Npb24oKSk7CisgICAgICAgIH0K
KyAgICB9CisjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBXYWxsVGltZSBtb2RpZmll
ZFNpbmNlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQogewogICAgIE5TVGltZUludGVy
dmFsIHRpbWVJbnRlcnZhbCA9IG1vZGlmaWVkU2luY2Uuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNv
bmRzKCk7CiAgICAgTlNEYXRlICpkYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNp
bmNlMTk3MDp0aW1lSW50ZXJ2YWxdOwotCi0gICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2lu
Y2VEYXRlKHNlc3Npb24ucGxhdGZvcm1TZXNzaW9uKCksIChfX2JyaWRnZSBDRkRhdGVSZWYpZGF0
ZSk7CisjaWYgSEFWRShIU1RTX1NUT1JBR0UpCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpKQorICAgICAgICBbbmV0d29ya1Nlc3Npb24tPmhzdHNTdG9yYWdlKCkgcmVz
ZXRIU1RTSG9zdHNTaW5jZURhdGU6ZGF0ZV07CisjZWxzZQorICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgX0NGTmV0d29ya1Jlc2V0SFNU
U0hvc3RzU2luY2VEYXRlKHNlc3Npb24tPnBsYXRmb3JtU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZE
YXRlUmVmKWRhdGUpOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlz
a0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCShyZXZpc2lvbiAyNjYw
ODMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBPQkpDX0NMQVNTIE5TVVJM
U2Vzc2lvbkRvd25sb2FkVGFzazsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKIE9CSkNf
Q0xBU1MgV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOwogT0JKQ19DTEFTUyBXS05ldHdvcmtTZXNz
aW9uV2ViU29ja2V0RGVsZWdhdGU7CitPQkpDX0NMQVNTIF9OU0hTVFNTdG9yYWdlOwogCiAjaW5j
bHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCkBA
IC0xMDQsNiArMTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFza1NlcnZlckNvbm5lY3Rpb25T
dWNjZWVkZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKICAgICB2b2lk
IHRhc2tGYWlsZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKICAgICBO
U1VSTENyZWRlbnRpYWwgKnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3Qg
U3RyaW5nJiBob3N0LCB1aW50MTZfdCBwb3J0KSBjb25zdDsKKyAgICBfTlNIU1RTU3RvcmFnZSAq
aHN0c1N0b3JhZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVBbmRD
YW5jZWwoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI2NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTAgQEAKIAogI2ltcG9ydCAiRGV2
aWNlTWFuYWdlbWVudFNvZnRMaW5rLmgiCiAKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzb2Z0IGxp
bmsgb25jZSByZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFy
ZSB1cGRhdGVkLgorU09GVF9MSU5LX0ZSQU1FV09SSyhDRk5ldHdvcmspCitTT0ZUX0xJTktfQ0xB
U1NfT1BUSU9OQUwoQ0ZOZXR3b3JrLCBfTlNIU1RTU3RvcmFnZSkKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAogQ0ZTdHJpbmdSZWYgY29uc3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5
ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KEAiV2ViS2l0MkhUVFBQcm94eSIpOwpAQCAtMTA5
Nyw2ICsxMTAxLDE3IEBAIE5TVVJMQ3JlZGVudGlhbCAqTmV0d29ya1Nlc3Npb25Db2NvYTo6c3UK
ICAgICByZXR1cm4gbV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmdldChrZXkpLmdldCgp
OwogfQogCitfTlNIU1RTU3RvcmFnZSAqTmV0d29ya1Nlc3Npb25Db2NvYTo6aHN0c1N0b3JhZ2Uo
KSBjb25zdAoreworI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorICAgIE5TVVJMU2Vzc2lvbkNvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uu
c2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBy
ZXNwb25kc1RvU2VsZWN0b3IgY2hlY2sgb25jZSByZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBp
biBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgorICAgIGlmIChbY29uZmlndXJhdGlvbiBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9oc3RzU3RvcmFnZSldKQorICAgICAgICByZXR1
cm4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJh
dGlvbi5faHN0c1N0b3JhZ2U7CisjZW5kaWYKKyAgICByZXR1cm4gbmlsOworfQorCiBjb25zdCBT
dHJpbmcmIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwpAQCAtMTIwMCw2
ICsxMjE1LDE1IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKIAog
ICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0
aW9uRm9yU2Vzc2lvbklEKG1fc2Vzc2lvbklEKTsKIAorI2lmIEhBVkUoSFNUU19TVE9SQUdFKQor
ICAgIGlmICghIXBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkgJiYgIW1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KHBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgcmVzcG9uZHNUb1NlbGVjdG9yIGNoZWNrIG9u
Y2UgcmRhcjovL3Byb2JsZW0vNTAxMDk2MzEgaXMgaW4gYSBidWlsZCBhbmQgYm90cyBhcmUgdXBk
YXRlZC4KKyAgICAgICAgaWYgKFtjb25maWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX2hzdHNTdG9yYWdlKV0pCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLl9oc3RzU3Rv
cmFnZSA9IFtbYWxsb2NfTlNIU1RTU3RvcmFnZUluc3RhbmNlKCkgaW5pdFBlcnNpc3RlbnRTdG9y
ZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGly
ZWN0b3J5IGlzRGlyZWN0b3J5OllFU11dIGF1dG9yZWxlYXNlXTsKKyAgICB9CisjZW5kaWYKKwog
I2lmIEhBVkUoQVBQX1NTTykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgY29uZmlndXJh
dGlvbi5fcHJldmVudHNBcHBTU08gPSB0cnVlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNw
cAkocmV2aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDIxICs5NCwyMyBA
QCBzdGF0aWMgQ1N0cmluZyBidWlsZEFjY2VwdExhbmd1YWdlcyhjb25zCiAgICAgcmV0dXJuIGJ1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEhv
c3ROYW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9y
YWdlU2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0TmFtZXMpCitIYXNoU2V0PFN0cmluZz4g
TmV0d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSBjb25zdAogewotICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxO
ZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9u
SUQoKSkpOworICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXM7CisgICAgY29uc3QgYXV0byog
c2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpOwogICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmdldEhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUoaG9zdE5hbWVzKTsKKyAgICByZXR1cm4gaG9zdE5hbWVzOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGhvc3ROYW1lcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZv
ckhvc3ROYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBob3N0TmFtZXMpCiB7Ci0gICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5l
dHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25J
RCgpKSk7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNz
aW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpOwogICAgIHNlc3Npb24tPnNvdXBO
ZXR3b3JrU2Vzc2lvbigpLmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhob3N0TmFtZXMpOwog
fQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQogewotICAgIGNvbnN0IGF1dG8qIHNlc3Npb24g
PSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzdG9yYWdl
U2Vzc2lvbi5zZXNzaW9uSUQoKSkpOworICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNf
Y2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKTsKICAg
ICBzZXNzaW9uLT5zb3VwTmV0d29ya1Nlc3Npb24oKS5jbGVhckhTVFNDYWNoZShtb2RpZmllZFNp
bmNlKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzQsOCArNDM0LDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6Ok1lc3NhZ2VOYW1lKTsKIAog
ICAgIGJvb2wgaXNVUkxLbm93bkhTVFNIb3N0KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25z
dDsKLSAgICB2b2lkIHJlc2V0SFNUU0hvc3RzKCk7Ci0gICAgdm9pZCByZXNldEhTVFNIb3N0c0Fk
ZGVkQWZ0ZXJEYXRlKGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7CiAKICAgICBz
dGF0aWMgdm9pZCByZWdpc3Rlckdsb2JhbFVSTFNjaGVtZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xI
YW5kbGVycyhjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyR2xvYmFs
VVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhhbmRsZXJzKGNvbnN0IFN0cmluZyYpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVN
YWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tD
b250ZXh0UHJpdmF0ZU1hYy5oCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdLQ29udGV4dFByaXZhdGVNYWNfaAogCiAjaW5jbHVk
ZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tQbHVnaW5Mb2FkUG9saWN5Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1
cwpAQCAtNDMsMTAgKzQ0LDggQEAgV0tfRVhQT1JUIFdLRGljdGlvbmFyeVJlZiBXS0NvbnRleHRD
b3B5UAogdHlwZWRlZiB2b2lkICheV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnNC
bG9jaykoV0tBcnJheVJlZiwgV0tFcnJvclJlZik7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRH
ZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0
R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnNCbG9jayBibG9jayk7CiAKLVdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKLQotLy8gVGhl
IHRpbWUgaGVyZSBpcyByZWxhdGl2ZSB0byB0aGUgVW5peCBlcG9jaC4KLVdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7CitXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRSZXNldEhTVFNIb3N0cyhXS0NvbnRleHRSZWYgY29udGV4dCkgV0tfQ19BUElfREVQ
UkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRl
ckRhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNl
MTk3MCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UmVn
aXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJp
bmdSZWYgc2NoZW1lKTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFVucmVnaXN0ZXJTY2hlbWVG
b3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1l
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2
YXRlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21h
Yy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTAxLDE0ICsxMDEsMTIgQEAgdm9pZCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFs
bGVkUGx1Z0lucwogI2VuZGlmCiB9CiAKLXZvaWQgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHMoV0tD
b250ZXh0UmVmIGNvbnRleHQpCit2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4
dFJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnJlc2V0SFNUU0hv
c3RzKCk7CiB9CiAKLXZvaWQgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShX
S0NvbnRleHRSZWYgY29udGV4dCwgZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKQor
dm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKFdLQ29udGV4dFJlZiwg
ZG91YmxlKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+cmVzZXRIU1RT
SG9zdHNBZGRlZEFmdGVyRGF0ZShzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCk7CiB9CiAKIHZv
aWQgV0tDb250ZXh0UmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYg
Y29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaAkocmV2aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw3ICs2OCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXNXZWJQcm9jZXNzQ2FjaGUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIHBhZ2VDYWNoZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygx
Mi4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPWlzSklURW5hYmxlZCkgQk9PTCBK
SVRFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHksIHNldHRlcj1zZXRIU1RTU3RvcmFn
ZURpcmVjdG9yeTopIE5TVVJMICpoc3RzU3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJs
ZSwgY29weSwgc2V0dGVyPXNldEhTVFNTdG9yYWdlRGlyZWN0b3J5OikgTlNVUkwgKmhzdHNTdG9y
YWdlRGlyZWN0b3J5IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5IiwgbWFjb3MoMTAu
MTUsIFdLX01BQ19UQkEpLCBpb3MoMTMuMCwgV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBjb25maWd1cmVKU0NGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFj
b3MoMTAuMTMpLCBpb3MoMTEuCiBAcHJvcGVydHkgKG5vbmF0b21pYykgTlNVSW50ZWdlciB0ZXN0
U3BlZWRNdWx0aXBsaWVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzdXBwcmVzc2VzQ29ubmVj
dGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFs
bG93c1NlcnZlclByZWNvbm5lY3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwg
c2V0dGVyPXNldEhTVFNTdG9yYWdlRGlyZWN0b3J5OikgTlNVUkwgKmhzdHNTdG9yYWdlRGlyZWN0
b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNVUkwgKmFsdGVybmF0
aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxOSBAQCAtICh2b2lkKXNldE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3Rvcnk6KE5TCiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkodXJsLnBhdGgpOwogfQogCistIChOU1VSTCAqKWhzdHNTdG9yYWdlRGlyZWN0b3J5
Cit7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPmhz
dHNTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKK30KKworLSAodm9pZClzZXRI
U1RTU3RvcmFnZURpcmVjdG9yeTooTlNVUkwgKil1cmwKK3sKKyAgICBpZiAoIV9jb25maWd1cmF0
aW9uLT5pc1BlcnNpc3RlbnQoKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxp
ZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkNhbm5vdCBzZXQgaHN0c1N0b3JhZ2VEaXJlY3Rv
cnkgb24gYSBub24tcGVyc2lzdGVudCBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi4i
XTsKKyAgICBjaGVja1VSTEFyZ3VtZW50KHVybCk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldEhT
VFNTdG9yYWdlRGlyZWN0b3J5KHVybC5wYXRoKTsKK30KKwogLSAoTlNVUkwgKilhbHRlcm5hdGl2
ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeQogewogICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOl9jb25maWd1cmF0aW9uLT5hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5KCkgaXNE
aXJlY3Rvcnk6WUVTXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjY2MDgzKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNzU1LDE4ICs3NTUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVy
Tm90aWZpY2F0CiAgICAgbV9wb3dlclNvdXJjZU5vdGlmaWVyID0gbnVsbHB0cjsKIH0KIAotc3Rh
dGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0g
ICAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbjsKLSAgICBzdGF0aWMgZGlz
cGF0Y2hfb25jZV90IG9uY2U7Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKLSAgICAgICAg
TlNTdHJpbmcgKmlkZW50aWZpZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALlBy
aXZhdGVCcm93c2luZyIsIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl1d
OwotICAgICAgICBzZXNzaW9uID0gY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKChfX2JyaWRn
ZSBDRlN0cmluZ1JlZilpZGVudGlmaWVyKTsKLSAgICB9KTsKLQotICAgIHJldHVybiBzZXNzaW9u
OwotfQotCiBib29sIFdlYlByb2Nlc3NQb29sOjppc1VSTEtub3duSFNUU0hvc3QoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwgPSBV
UkwoVVJMKCksIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKTsKQEAgLTc3NCwxOSArNzYyLDYgQEAg
Ym9vbCBXZWJQcm9jZXNzUG9vbDo6aXNVUkxLbm93bkhTVFNIb3N0KAogICAgIHJldHVybiBfQ0ZO
ZXR3b3JrSXNLbm93bkhTVFNIb3N0V2l0aFNlc3Npb24odXJsLmdldCgpLCBudWxscHRyKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRIU1RTSG9zdHMoKQotewotICAgIF9DRk5ldHdv
cmtSZXNldEhTVFNIb3N0c1dpdGhTZXNzaW9uKG51bGxwdHIpOwotICAgIF9DRk5ldHdvcmtSZXNl
dEhTVFNIb3N0c1dpdGhTZXNzaW9uKHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7Ci19Ci0KLXZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoZG91YmxlIHN0
YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKQotewotICAgIE5TRGF0ZSAqc3RhcnREYXRlID0gW05T
RGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpzdGFydERhdGVJbnRlcnZhbFNpbmNl
MTk3MF07Ci0gICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKG51bGxwdHIsIChf
X2JyaWRnZSBDRkRhdGVSZWYpc3RhcnREYXRlKTsKLSAgICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9z
dHNTaW5jZURhdGUocHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVm
KXN0YXJ0RGF0ZSk7Ci19Ci0KICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNT
X1dJTkRPV1NFUlZFUl9CTE9DS0lORykKIE9wdGlvbmFsPHVuc2lnbmVkPiBXZWJQcm9jZXNzUG9v
bDo6bm9taW5hbEZyYW1lc1BlclNlY29uZEZvckRpc3BsYXkoV2ViQ29yZTo6UGxhdGZvcm1EaXNw
bGF5SUQgZGlzcGxheUlEKQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI2NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDggQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZQogICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5k
Ym94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkoKSkpOwogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKS5pc0VtcHR5KCkgJiYgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmNhY2hlU3RvcmFnZURp
cmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNl
dENhY2hlU3RvcmFnZURpcmVjdG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9j
b25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25m
aWd1cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVk
Q29uZmlndXJhdGlvbi0+aHN0c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAg
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeShyZXNvbHZl
UGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVj
dG9yeSgpKSk7CiAKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIGZvciBmaWxlIHBhdGhzLgog
ICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jb29raWVTdG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkg
ewpAQCAtMjI4Myw2ICsyMjg1LDExIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNp
dGVEYXRhU3QKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShu
ZXR3b3JrQ2FjaGVEaXJlY3RvcnksIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CiAKKyAgICBhdXRvIGhzdHNTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRIU1RTU3RvcmFn
ZURpcmVjdG9yeSgpOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoc3RzU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KGhzdHNTdG9yYWdlRGlyZWN0b3J5LCBoc3RzU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CisKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBmYWxzZTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6
OkFsbEJ1dENvb2tpZXM7CkBAIC0yMzI1LDYgKzIzMzIsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbExv
YWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgPSBtX2Nv
bmZpZ3VyYXRpb24tPmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9u
c0ZvclRlc3RpbmcoKTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMubmV0d29ya0NhY2hl
RGlyZWN0b3J5ID0gV1RGTW92ZShuZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOwogICAgIG5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZShoc3RzU3Rv
cmFnZURpcmVjdG9yeSk7CisgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmhzdHNTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShoc3RzU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmRhdGFDb25uZWN0
aW9uU2VydmljZVR5cGUgPSBtX2NvbmZpZ3VyYXRpb24tPmRhdGFDb25uZWN0aW9uU2VydmljZVR5
cGUoKTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmFzdFNlcnZlclRydXN0RXZhbHVh
dGlvbkVuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPmZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25F
bmFibGVkKCk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPm5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9u
IDI2NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcm
IHJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSFNUU1N0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+aHN0c1N0b3JhZ2VEaXJlY3Rv
cnkoKTsgfQogCiAgICAgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UmIGRldmljZUlkSGFzaFNhbHRT
dG9yYWdlKCkgeyByZXR1cm4gbV9kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5nZXQoKTsgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAy
NjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDcgQEAg
UmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaQogICAgIGNvcHktPm1faW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5OwogICAgIGNvcHktPm1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHRo
aXMtPm1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKICAgICBjb3B5LT5tX3dl
YlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsK
LSNpZiBVU0UoR0xJQikKICAgICBjb3B5LT5tX2hzdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+
bV9oc3RzU3RvcmFnZURpcmVjdG9yeTsKLSNlbmRpZgogICAgIGNvcHktPm1fbG9jYWxTdG9yYWdl
RGlyZWN0b3J5ID0gdGhpcy0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5OwogICAgIGNvcHktPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSA9IHRoaXMtPm1f
YWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsMTAgKzY3LDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYg
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNl
RGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcm
JiBkaXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0
b3J5KTsgfQotI2lmIFVTRShHTElCKSAvLyBBY2NvcmRpbmcgdG8gcjI0NTA3NSB0aGlzIHdpbGwg
ZXZlbnR1YWxseSBtb3ZlIGhlcmUuCisKICAgICBjb25zdCBTdHJpbmcmIGhzdHNTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9oc3RzU3RvcmFnZURpcmVjdG9yeTsgfQogICAgIHZv
aWQgc2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1faHN0c1N0
b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KLSNlbmRpZgorCiAgICAgY29u
c3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2Fs
U3RvcmFnZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0
cmluZyYmIGRpcmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGly
ZWN0b3J5KTsgfQogCkBAIC0xNzUsOCArMTc1LDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
OwotI2lmIFVTRShHTElCKQogICAgIFN0cmluZyBtX2hzdHNTdG9yYWdlRGlyZWN0b3J5OworI2lm
IFVTRShHTElCKQogICAgIGJvb2wgbV9uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25F
bmFibGVkIHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29sIG1fbmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVWYWxpZGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407128</attachid>
            <date>2020-08-24 13:35:16 -0700</date>
            <delta_ts>2020-08-24 14:41:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213048-20200824133515.patch</filename>
            <type>text/plain</type>
            <size>38587</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTA4LTI0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwog
MjAyMC0wOC0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIEFkZCBJbnRsLlNlZ21lbnRlcgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlz
aW9uIDI2NjA4MykKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MTEsNiArNDExLDE0IEBACiAjZGVmaW5lIEhBVkVfQlJPS0VOX0RPV05MT0FEX1JF
U1VNRV9VTkxJTksgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgXAorICAgIHx8ICgoUExBVEZPUk0oSU9T
KSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDE0MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dBVENI
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDcwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKEFQ
UExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKSBcCisgICAg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjZGVmaW5lIEhBVkVfSFNUU19TVE9SQUdFIDEKKyNl
bmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAwMDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCiAjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX01F
VFJJQ1NfQVBJU19WNCAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24g
MjY2MDgzKQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTA4LTI0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBTUEkgZm9yIEhTVFMgc3RvcmFnZSB0byByZXBsYWNlIF9XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oc3RzU3RvcmFnZURpcmVjdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIw
MjAtMDgtMjAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFttYWNPU10gV2ViIHBhZ2VzIGFyZSBub3QgcmVzcG9uZGluZyBjb3JyZWN0bHkgdG8gY2hhbmdl
cyBpbiAiUmVkdWNlIG1vdGlvbiIgc2V0dGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDAsNiArMjAwLDE2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkMK
IEBjbGFzcyBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2U7CiAjZW5kaWYKIAorI2lm
IEhBVkUoSFNUU19TVE9SQUdFKQorQGludGVyZmFjZSBfTlNIU1RTU3RvcmFnZSA6IE5TT2JqZWN0
CistIChpbnN0YW5jZXR5cGUpaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6KG51bGxhYmxlIE5T
VVJMKilwYXRoOworLSAoQk9PTClzaG91bGRQcm9tb3RlSG9zdFRvSFRUUFM6KE5TU3RyaW5nICop
aG9zdDsKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilub25QcmVsb2FkZWRIb3N0czsKKy0gKHZv
aWQpcmVzZXRIU1RTRm9ySG9zdDooTlNTdHJpbmcgKilob3N0OworLSAodm9pZClyZXNldEhTVFNI
b3N0c1NpbmNlRGF0ZTooTlNEYXRlICopZGF0ZTsKK0BlbmQKKyNlbmRpZgorCiBAaW50ZXJmYWNl
IE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKCkKIEBwcm9wZXJ0eSAoYXNzaWduKSBfVGltaW5n
RGF0YU9wdGlvbnMgX3RpbWluZ0RhdGFPcHRpb25zOwogQHByb3BlcnR5IChjb3B5KSBOU0RhdGEg
Kl9zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0VG9rZW5EYXRhOwpAQCAtMjI4LDYgKzIzOCw5IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkMKIEBwcm9wZXJ0eSAobnVsbGFi
bGUsIHJldGFpbikgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlICpfYWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2U7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSwgYXNzaWduKSBCT09MIF9h
bGxvd3NIVFRQMzsKICNlbmRpZgorI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorQHByb3BlcnR5IChu
dWxsYWJsZSwgcmV0YWluKSBfTlNIU1RTU3RvcmFnZSAqX2hzdHNTdG9yYWdlOworI2VuZGlmCiBA
ZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxTZXNzaW9uVGFzayAoKQpAQCAtMzk1LDEyICs0MDgsMTQg
QEAgQ0ZOX0VYUE9SVCB2b2lkIF9DRkhUVFBNZXNzYWdlU2V0UmVzcG9ucwogQ0ZEYXRhUmVmIF9D
Rk5ldHdvcmtDb3B5QVRTQ29udGV4dCh2b2lkKTsKIEJvb2xlYW4gX0NGTmV0d29ya1NldEFUU0Nv
bnRleHQoQ0ZEYXRhUmVmKTsKIAorQm9vbGVhbiBfQ0ZOZXR3b3JrSXNLbm93bkhTVFNIb3N0V2l0
aFNlc3Npb24oQ0ZVUkxSZWYsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYpOworI2lmICFIQVZFKEhT
VFNfU1RPUkFHRSkKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGTmV0d29ya0hTVFNQcmVs
b2FkZWQ7CiBDRkRpY3Rpb25hcnlSZWYgX0NGTmV0d29ya0NvcHlIU1RTUG9saWNpZXMoQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZik7CiB2b2lkIF9DRk5ldHdvcmtSZXNldEhTVFMoQ0ZVUkxSZWYsIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYpOwogdm9pZCBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5j
ZURhdGUoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiwgQ0ZEYXRlUmVmKTsKLUJvb2xlYW4gX0NGTmV0
d29ya0lzS25vd25IU1RTSG9zdFdpdGhTZXNzaW9uKENGVVJMUmVmLCBDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmKTsKIHZvaWQgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzV2l0aFNlc3Npb24oQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZik7CisjZW5kaWYKIAogQ0ZEYXRhUmVmIENGSFRUUENvb2tpZVN0b3Jh
Z2VDcmVhdGVJZGVudGlmeWluZ0RhdGEoQ0ZBbGxvY2F0b3JSZWYgaW5BbGxvY2F0b3IsIENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYgaW5TdG9yYWdlKTsKIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgQ0ZI
VFRQQ29va2llU3RvcmFnZUNyZWF0ZUZyb21JZGVudGlmeWluZ0RhdGEoQ0ZBbGxvY2F0b3JSZWYg
aW5BbGxvY2F0b3IsIENGRGF0YVJlZiBpbkRhdGEpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2
NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNjUgQEAKKzIwMjAtMDgtMjQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBNYWtlIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IFNQSSBmb3IgSFNUUyBzdG9yYWdlIHRvIHJlcGxhY2UgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmhzdHNTdG9yYWdlRGlyZWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTMwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFi
bGV0LgorCisgICAgICAgIFRoaXMgdXNlcyBDRk5ldHdvcmsgU1BJIGludHJvZHVjZWQgaW4gcmRh
cjovL3Byb2JsZW0vNTAxMDk2MzEgdG8gYWxsb3cgSFNUUyBzdG9yYWdlIHBlciBOU1VSTFNlc3Np
b24uCisgICAgICAgIFRvIGJlIGNvbXBsZXRlLCBJIGFsc28gZGVwcmVjYXRlZCBvdXIgVUkgcHJv
Y2VzcyBIU1RTIHN0YXRlIHJlbW92YWwgYXR0ZW1wdCBTUElzLCBXS0NvbnRleHRSZXNldEhTVFNI
b3N0cyBhbmQKKyAgICAgICAgV0tDb250ZXh0UmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZSwg
d2hpY2ggaGFkIHRoZWlyIGxhc3QgdXNlIHJlbW92ZWQgaW4gcmRhcjovL3Byb2JsZW0vNjQyMjA4
MzguCisKKyAgICAgICAgSSBtYW51YWxseSB2ZXJpZmllZCB0aGF0IHRoaXMgbmV3IFNQSSBwdXRz
IEhTVFMgZGF0YSBpbiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLCBhbmQgSSBhbHNvIHZlcmlmaWVk
IHRoYXQgSFNUUworICAgICAgICBzdGF0ZSBxdWVyeWluZyBhbmQgcmVtb3ZhbCB3b3JrcyB3aXRo
IHRoZSBuZXcgQ0ZOZXR3b3JrIFNQSSBhcyBpdCBkaWQgd2l0aCB0aGUgb2xkIG9uZS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFi
bGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFySFNUU0NhY2hlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpoc3RzU3RvcmFnZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9u
Q29jb2EpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNU
U0NhY2hlRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNs
ZWFySFNUU0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldEhvc3RO
YW1lc1dpdGhIU1RTQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9t
YWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tDb250ZXh0UHJpdmF0ZU1hYy5tbToKKyAgICAgICAgKFdLQ29udGV4dFJlc2V0SFNUU0hvc3Rz
KToKKyAgICAgICAgKFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uIGhzdHNTdG9yYWdlRGlyZWN0b3J5XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIHNldEhTVFNTdG9yYWdlRGlyZWN0b3J5Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0Ojpwcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0SFNUU0hvc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZEhTVFNTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
Y29weSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmg6CisKIDIwMjAtMDgtMjQgIEFkaXR5YSBLZWVydGhpICA8YWtl
ZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gU2hvdyBwaWNrZXIgZm9yIGRhdGUg
YW5kIGRhdGV0aW1lLWxvY2FsIGlucHV0IHR5cGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjY2MDgzKQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NTMsMTAgKzE1NTMsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdl
YnNpdGVEYXRhKFBBCiAgICAgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQot
ICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0Nh
Y2hlKSkgewotICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgICAgIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2Fj
aGUoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dlYnNpdGVE
YXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwotICAgIH0KKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gaG9z
dE5hbWVzV2l0aEhTVFNDYWNoZShzZXNzaW9uSUQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKQEAgLTE2MTUsMTAgKzE2MTMsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpmZXRjaFdlYnNpdGVEYXRhKFBBCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IHdlYnNpdGVEYXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCi0gICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihz
ZXNzaW9uSUQpKQotICAgICAgICAgICAgY2xlYXJIU1RTQ2FjaGUoKm5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiwgbW9kaWZpZWRTaW5jZSk7Ci0gICAgfQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKKyAgICAgICAgY2xlYXJIU1RTQ2Fj
aGUoc2Vzc2lvbklELCBtb2RpZmllZFNpbmNlKTsKICNlbmRpZgogCiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKSkgewpAQCAtMTcyMCwx
MCArMTcxNiw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm8KICAg
ICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKFNPVVApCi0gICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQotICAgICAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKCpuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIEhTVFNDYWNoZUhvc3ROYW1lcyk7Ci0gICAgfQorICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkKKyAgICAgICAg
ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKHNlc3Npb25JRCwgSFNUU0NhY2hlSG9zdE5hbWVz
KTsKICNlbmRpZgogCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKQEAg
LTE4OTEsMTUgKzE4ODUsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlQW5kUmVzdHJp
Y3RXZQogICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lc1dpdGhIU1RTVG9EZWxldGU7CiAjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShTT1VQKQogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SFNUU0NhY2hlKSkgewotICAgICAgICBpZiAoYXV0byog
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewotICAg
ICAgICAgICAgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKLSAgICAgICAgICAgIGhvc3RuYW1lc1dpdGhIU1RT
VG9EZWxldGUgPSBmaWx0ZXJGb3JSZWdpc3RyYWJsZURvbWFpbnMoZG9tYWluc1RvRGVsZXRlQWxs
Tm9uQ29va2llV2Vic2l0ZURhdGFGb3IsIGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOworICAgICAg
ICBob3N0TmFtZXNXaXRoSFNUU0NhY2hlID0gdGhpcy0+aG9zdE5hbWVzV2l0aEhTVFNDYWNoZShz
ZXNzaW9uSUQpOworICAgICAgICBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlID0gZmlsdGVyRm9y
UmVnaXN0cmFibGVEb21haW5zKGRvbWFpbnNUb0RlbGV0ZUFsbE5vbkNvb2tpZVdlYnNpdGVEYXRh
Rm9yLCBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKTsKIAotICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBob3N0IDogaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSkKLSAgICAgICAgICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPm1fZG9tYWlucy5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21Ib3N0KGhvc3QpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBob3N0
IDogaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSkKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVn
YXRvci0+bV9kb21haW5zLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJv
bUhvc3QoaG9zdCkpOwogCi0gICAgICAgICAgICBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMo
Km5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgaG9zdG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKHNlc3Npb25JRCwgaG9z
dG5hbWVzV2l0aEhTVFNUb0RlbGV0ZSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTIwODIsMTggKzIw
NzQsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVnaXN0cmFibGVEb21haW5zVwogICAgICAg
ICB9KTsKICAgICB9KSk7CiAgICAgCi0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IGNhbGxi
YWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKKyAgICBhdXRvJiB3ZWJzaXRlRGF0YSA9IGNh
bGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YTsKICAgICAKICAgICBpZiAod2Vic2l0ZURh
dGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXMpKSB7CiAgICAgICAgIGlm
IChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQp
KQotICAgICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyh3ZWJzaXRlRGF0YVN0b3JlLmhvc3ROYW1lc1dpdGhDb29raWVzKTsKKyAgICAgICAgICAg
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMod2Vic2l0ZURh
dGEuaG9zdE5hbWVzV2l0aENvb2tpZXMpOwogICAgIH0KICAgICAKICNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKFNPVVApCi0gICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpIU1RTQ2FjaGUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICAgICAgZ2V0SG9z
dE5hbWVzV2l0aEhTVFNDYWNoZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCB3ZWJzaXRlRGF0YVN0
b3JlLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpOwotICAgIH0KKyAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkhTVFNDYWNoZSkpCisgICAgICAgIHdlYnNp
dGVEYXRhLmhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUgPSBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKHNl
c3Npb25JRCk7CiAjZW5kaWYKIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5NCw5ICsxOTQsOSBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291
cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBVU0UoU09VUCkKLSAgICB2b2lkIGdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+Jik7Ci0gICAgdm9p
ZCBkZWxldGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLSAgICB2b2lkIGNsZWFySFNUU0NhY2hlKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOwor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0TmFtZXNXaXRoSFNUU0NhY2hlKFBBTDo6U2Vzc2lvbklE
KSBjb25zdDsKKyAgICB2b2lkIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICB2b2lkIGNsZWFySFNUU0NhY2hlKFBB
TDo6U2Vzc2lvbklELCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKTsKICNlbmRpZgogCiAgICAgdm9p
ZCBmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjY2MDgzKQor
KysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAgdm9pZCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIgPDwgYWx0ZXJuYXRpdmVT
ZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgaHR0cDNFbmFi
bGVkOwogI2VuZGlmCisgICAgZW5jb2RlciA8PCBoc3RzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBl
bmNvZGVyIDw8IGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2lmIFVTRShT
T1VQKQogICAgIGVuY29kZXIgPDwgY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGVu
Y29kZXIgPDwgY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOwpAQCAtMTU0LDYgKzE1NiwxNiBA
QCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAorICAgIE9wdGlvbmFsPFN0cmluZz4gaHN0c1N0b3Jh
Z2VEaXJlY3Rvcnk7CisgICAgZGVjb2RlciA+PiBoc3RzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBp
ZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoc3RzU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBkZWNvZGVyID4+IGhzdHNTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOworICAgIGlmICghaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCiAjaWYgVVNFKFNPVVAp
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAg
ZGVjb2RlciA+PiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CkBAIC0yODEsNiArMjkzLDgg
QEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcgogICAgICAgICAsIFdU
Rk1vdmUoKmFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKICAgICAg
ICAgLCBXVEZNb3ZlKCpodHRwM0VuYWJsZWQpCiAjZW5kaWYKKyAgICAgICAgLCBXVEZNb3ZlKCpo
c3RzU3RvcmFnZURpcmVjdG9yeSkKKyAgICAgICAgLCBXVEZNb3ZlKCpoc3RzU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSkKICNpZiBVU0UoU09VUCkKICAgICAgICAgLCBXVEZNb3ZlKCpj
b29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgpCiAgICAgICAgICwgV1RGTW92ZSgqY29va2llUGVy
c2lzdGVudFN0b3JhZ2VUeXBlKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAko
cmV2aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw4
IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyAKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgIGJvb2wgaHR0cDNFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgorICAgIFN0cmlu
ZyBoc3RzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaHN0
c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjaWYgVVNFKFNPVVApCiAgICAgU3Ry
aW5nIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBTb3VwQ29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUeXBlIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSB7IFNvdXBDb29raWVQZXJz
aXN0ZW50U3RvcmFnZVR5cGU6OlRleHQgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHJldmlz
aW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Byb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw3IEBAIFJldGFp
blB0cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9jZXNzOjpzb3UKICNlbmRpZgogfQogCisjaWYgIUhB
VkUoSFNUU19TVE9SQUdFKQogc3RhdGljIHZvaWQgZmlsdGVyUHJlbG9hZEhTVFNFbnRyeShjb25z
dCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIHZhbHVlLCB2b2lkKiBjb250ZXh0KQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGNvbnRleHQpOwpAQCAtMTUyLDI3ICsxNTMsNTMgQEAgc3RhdGljIHZvaWQg
ZmlsdGVyUHJlbG9hZEhTVFNFbnRyeShjb25zdAogICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1
ZSh2YWwsIF9rQ0ZOZXR3b3JrSFNUU1ByZWxvYWRlZCkgIT0ga0NGQm9vbGVhblRydWUpCiAgICAg
ICAgIGhvc3RuYW1lcy0+YWRkKChDRlN0cmluZ1JlZilrZXkpOwogfQorI2VuZGlmCiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3ROYW1lcykKK0hh
c2hTZXQ8U3RyaW5nPiBOZXR3b3JrUHJvY2Vzczo6aG9zdE5hbWVzV2l0aEhTVFNDYWNoZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8gSFNUU1BvbGljaWVz
ID0gYWRvcHRDRihfQ0ZOZXR3b3JrQ29weUhTVFNQb2xpY2llcyhzZXNzaW9uLnBsYXRmb3JtU2Vz
c2lvbigpKSkpCi0gICAgICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24oSFNUU1BvbGljaWVz
LmdldCgpLCBmaWx0ZXJQcmVsb2FkSFNUU0VudHJ5LCAmaG9zdE5hbWVzKTsKKyAgICBIYXNoU2V0
PFN0cmluZz4gaG9zdE5hbWVzOworI2lmIEhBVkUoSFNUU19TVE9SQUdFKQorICAgIGlmIChhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EqPih0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkgeworICAgICAgICBmb3IgKE5TU3RyaW5nICpo
b3N0IGluIG5ldHdvcmtTZXNzaW9uLT5oc3RzU3RvcmFnZSgpLm5vblByZWxvYWRlZEhvc3RzKQor
ICAgICAgICAgICAgaG9zdE5hbWVzLmFkZChob3N0KTsKKyAgICB9CisjZWxzZQorICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAo
YXV0byBIU1RTUG9saWNpZXMgPSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5SFNUU1BvbGljaWVzKHNl
c3Npb24tPnBsYXRmb3JtU2Vzc2lvbigpKSkpCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlBcHBs
eUZ1bmN0aW9uKEhTVFNQb2xpY2llcy5nZXQoKSwgZmlsdGVyUHJlbG9hZEhTVFNFbnRyeSwgJmhv
c3ROYW1lcyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGhvc3ROYW1lczsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlSFNUU0NhY2hlRm9ySG9zdE5hbWVzKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RO
YW1lcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMp
CiB7Ci0gICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykgewotICAgICAgICBhdXRv
IHVybCA9IFVSTCh7IH0sIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgaG9zdE5hbWUpKTsKLSAgICAg
ICAgX0NGTmV0d29ya1Jlc2V0SFNUUyh1cmwuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgc2Vzc2lvbi5w
bGF0Zm9ybVNlc3Npb24oKSk7CisjaWYgSEFWRShIU1RTX1NUT1JBR0UpCisgICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSo+KHRoaXMt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKSB7CisgICAgICAgIGZvciAoYXV0byYgaG9zdE5h
bWUgOiBob3N0TmFtZXMpCisgICAgICAgICAgICBbbmV0d29ya1Nlc3Npb24tPmhzdHNTdG9yYWdl
KCkgcmVzZXRIU1RTRm9ySG9zdDpob3N0TmFtZV07CiAgICAgfQorI2Vsc2UKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgZm9yIChh
dXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykgeworICAgICAgICAgICAgYXV0byB1cmwgPSBVUkwo
eyB9LCBtYWtlU3RyaW5nKCJodHRwczovLyIsIGhvc3ROYW1lKSk7CisgICAgICAgICAgICBfQ0ZO
ZXR3b3JrUmVzZXRIU1RTKHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBzZXNzaW9uLT5wbGF0Zm9y
bVNlc3Npb24oKSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xl
YXJIU1RTQ2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlKQogewogICAgIE5TVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCA9IG1vZGlmaWVkU2luY2Uu
c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCk7CiAgICAgTlNEYXRlICpkYXRlID0gW05TRGF0
ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDp0aW1lSW50ZXJ2YWxdOwotCi0gICAgX0NG
TmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKHNlc3Npb24ucGxhdGZvcm1TZXNzaW9uKCks
IChfX2JyaWRnZSBDRkRhdGVSZWYpZGF0ZSk7CisjaWYgSEFWRShIU1RTX1NUT1JBR0UpCisgICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2Nv
YSo+KHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKQorICAgICAgICBbbmV0d29ya1Nl
c3Npb24tPmhzdHNTdG9yYWdlKCkgcmVzZXRIU1RTSG9zdHNTaW5jZURhdGU6ZGF0ZV07CisjZWxz
ZQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKKyAg
ICAgICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKHNlc3Npb24tPnBsYXRmb3Jt
U2Vzc2lvbigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVmKWRhdGUpOworI2VuZGlmCiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5oCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQCBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKIE9CSkNfQ0xBU1Mg
TlNPcGVyYXRpb25RdWV1ZTsKIE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOwog
T0JKQ19DTEFTUyBXS05ldHdvcmtTZXNzaW9uV2ViU29ja2V0RGVsZWdhdGU7CitPQkpDX0NMQVNT
IF9OU0hTVFNTdG9yYWdlOwogCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk5l
dHdvcmtEYXRhVGFza0NvY29hLmgiCkBAIC0xMDQsNiArMTA1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgdGFza1NlcnZlckNvbm5lY3Rpb25TdWNjZWVkZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRh
c2tJZGVudGlmaWVyKTsKICAgICB2b2lkIHRhc2tGYWlsZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6
OlRhc2tJZGVudGlmaWVyKTsKICAgICBOU1VSTENyZWRlbnRpYWwgKnN1Y2Nlc3NmdWxDbGllbnRD
ZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCB1aW50MTZfdCBwb3J0KSBjb25z
dDsKKyAgICBfTlNIU1RTU3RvcmFnZSAqaHN0c1N0b3JhZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0JKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjgsNiAr
NjgsMTAgQEAKIAogI2ltcG9ydCAiRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLmgiCiAKKy8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyBzb2Z0IGxpbmsgb25jZSByZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBp
cyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgorU09GVF9MSU5LX0ZSQU1FV09SSyhD
Rk5ldHdvcmspCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQ0ZOZXR3b3JrLCBfTlNIU1RTU3Rv
cmFnZSkKKwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogQ0ZTdHJpbmdSZWYgY29uc3QgV2Vi
S2l0MkhUVFBQcm94eURlZmF1bHRzS2V5ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KEAiV2Vi
S2l0MkhUVFBQcm94eSIpOwpAQCAtMTA5Nyw2ICsxMTAxLDE3IEBAIE5TVVJMQ3JlZGVudGlhbCAq
TmV0d29ya1Nlc3Npb25Db2NvYTo6c3UKICAgICByZXR1cm4gbV9zdWNjZXNzZnVsQ2xpZW50Q2Vy
dGlmaWNhdGVzLmdldChrZXkpLmdldCgpOwogfQogCitfTlNIU1RTU3RvcmFnZSAqTmV0d29ya1Nl
c3Npb25Db2NvYTo6aHN0c1N0b3JhZ2UoKSBjb25zdAoreworI2lmIEhBVkUoSFNUU19TVE9SQUdF
KQorICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBtX3Nlc3Np
b25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uOworICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyByZXNwb25kc1RvU2VsZWN0b3IgY2hlY2sgb25jZSByZGFy
Oi8vcHJvYmxlbS81MDEwOTYzMSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgor
ICAgIGlmIChbY29uZmlndXJhdGlvbiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9oc3Rz
U3RvcmFnZSldKQorICAgICAgICByZXR1cm4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdl
LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbi5faHN0c1N0b3JhZ2U7CisjZW5kaWYKKyAgICBy
ZXR1cm4gbmlsOworfQorCiBjb25zdCBTdHJpbmcmIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmJvdW5k
SW50ZXJmYWNlSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYm91bmRJbnRlcmZh
Y2VJZGVudGlmaWVyOwpAQCAtMTIwMCw2ICsxMjE1LDE1IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6
Ok5ldHdvcmtTZXNzaW9uQ29jb2EKIAogICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNv
bmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uRm9yU2Vzc2lvbklEKG1fc2Vzc2lvbklEKTsKIAor
I2lmIEhBVkUoSFNUU19TVE9SQUdFKQorICAgIGlmICghIXBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VE
aXJlY3RvcnkgJiYgIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKKyAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgcmVz
cG9uZHNUb1NlbGVjdG9yIGNoZWNrIG9uY2UgcmRhcjovL3Byb2JsZW0vNTAxMDk2MzEgaXMgaW4g
YSBidWlsZCBhbmQgYm90cyBhcmUgdXBkYXRlZC4KKyAgICAgICAgaWYgKFtjb25maWd1cmF0aW9u
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2hzdHNTdG9yYWdlKV0pCisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uLl9oc3RzU3RvcmFnZSA9IFtbYWxsb2NfTlNIU1RTU3RvcmFnZUluc3Rh
bmNlKCkgaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpw
YXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU11dIGF1dG9yZWxl
YXNlXTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEhBVkUoQVBQX1NTTykgfHwgUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAgICAgY29uZmlndXJhdGlvbi5fcHJldmVudHNBcHBTU08gPSB0cnVlOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nl
c3NTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAkocmV2aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk0LDIxICs5NCwyMyBAQCBzdGF0aWMgQ1N0cmluZyBidWlsZEFjY2VwdExhbmd1
YWdlcyhjb25zCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0
TmFtZXMpCitIYXNoU2V0PFN0cmluZz4gTmV0d29ya1Byb2Nlc3M6Omhvc3ROYW1lc1dpdGhIU1RT
Q2FjaGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdAogewotICAgIGNvbnN0IGF1dG8q
IHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3JrU2Vzc2lv
bihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOworICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0
TmFtZXM7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNz
aW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpOwogICAgIHNlc3Npb24tPnNvdXBO
ZXR3b3JrU2Vzc2lvbigpLmdldEhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUoaG9zdE5hbWVzKTsKKyAg
ICByZXR1cm4gaG9zdE5hbWVzOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVIU1RT
Q2FjaGVGb3JIb3N0TmFtZXMoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdl
U2Vzc2lvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcykKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0TmFtZXMpCiB7Ci0gICAgY29uc3QgYXV0byog
c2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9u
KHN0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CisgICAgY29uc3QgYXV0byogc2Vzc2lvbiA9
IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCo+KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpOwogICAgIHNlc3Npb24tPnNvdXBOZXR3b3JrU2Vzc2lvbigpLmRlbGV0ZUhTVFNDYWNoZUZv
ckhvc3ROYW1lcyhob3N0TmFtZXMpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckhT
VFNDYWNoZShXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBX
YWxsVGltZSBtb2RpZmllZFNpbmNlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJIU1RTQ2Fj
aGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSBtb2RpZmllZFNpbmNlKQogewot
ICAgIGNvbnN0IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAq
PihuZXR3b3JrU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOworICAgIGNvbnN0
IGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAqPihuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICBzZXNzaW9uLT5zb3VwTmV0d29ya1Nlc3Npb24oKS5j
bGVhckhTVFNDYWNoZShtb2RpZmllZFNpbmNlKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzQsOCAr
NDM0LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6Ok1lc3NhZ2VOYW1lKTsKIAogICAgIGJvb2wgaXNVUkxLbm93bkhTVFNIb3N0KGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdDsKLSAgICB2b2lkIHJlc2V0SFNUU0hvc3RzKCk7Ci0g
ICAgdm9pZCByZXNldEhTVFNIb3N0c0FkZGVkQWZ0ZXJEYXRlKGRvdWJsZSBzdGFydERhdGVJbnRl
cnZhbFNpbmNlMTk3MCk7CiAKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlckdsb2JhbFVSTFNjaGVt
ZUFzSGF2aW5nQ3VzdG9tUHJvdG9jb2xIYW5kbGVycyhjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0
aWMgdm9pZCB1bnJlZ2lzdGVyR2xvYmFsVVJMU2NoZW1lQXNIYXZpbmdDdXN0b21Qcm90b2NvbEhh
bmRsZXJzKGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oCShyZXZpc2lvbiAyNjYw
ODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0
ZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdLQ29udGV4
dFByaXZhdGVNYWNfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdl
YktpdC9XS0RlcHJlY2F0ZWQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQbHVnaW5Mb2FkUG9saWN5
Lmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtNDMsMTAgKzQ0LDggQEAgV0tfRVhQT1JUIFdL
RGljdGlvbmFyeVJlZiBXS0NvbnRleHRDb3B5UAogdHlwZWRlZiB2b2lkICheV0tDb250ZXh0R2V0
SW5mb0Zvckluc3RhbGxlZFBsdWdJbnNCbG9jaykoV0tBcnJheVJlZiwgV0tFcnJvclJlZik7CiBX
S19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucyhXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnNCbG9jayBi
bG9jayk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4
dFJlZiBjb250ZXh0KTsKLQotLy8gVGhlIHRpbWUgaGVyZSBpcyByZWxhdGl2ZSB0byB0aGUgVW5p
eCBlcG9jaC4KLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRl
ckRhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIGRvdWJsZSBzdGFydERhdGVJbnRlcnZhbFNpbmNl
MTk3MCk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0cyhXS0NvbnRleHRS
ZWYgY29udGV4dCkgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4
dFJlc2V0SFNUU0hvc3RzQWRkZWRBZnRlckRhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIGRvdWJs
ZSBzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0UmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKTsKIFdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCShyZXZpc2lv
biAyNjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0
UHJpdmF0ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDE0ICsxMDEsMTIgQEAgdm9pZCBX
S0NvbnRleHRHZXRJbmZvRm9ySW5zdGFsbGVkUGx1Z0lucwogI2VuZGlmCiB9CiAKLXZvaWQgV0tD
b250ZXh0UmVzZXRIU1RTSG9zdHMoV0tDb250ZXh0UmVmIGNvbnRleHQpCit2b2lkIFdLQ29udGV4
dFJlc2V0SFNUU0hvc3RzKFdLQ29udGV4dFJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0lt
cGwoY29udGV4dCktPnJlc2V0SFNUU0hvc3RzKCk7CiB9CiAKLXZvaWQgV0tDb250ZXh0UmVzZXRI
U1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShXS0NvbnRleHRSZWYgY29udGV4dCwgZG91YmxlIHN0YXJ0
RGF0ZUludGVydmFsU2luY2UxOTcwKQordm9pZCBXS0NvbnRleHRSZXNldEhTVFNIb3N0c0FkZGVk
QWZ0ZXJEYXRlKFdLQ29udGV4dFJlZiwgZG91YmxlKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRv
SW1wbChjb250ZXh0KS0+cmVzZXRIU1RTSG9zdHNBZGRlZEFmdGVyRGF0ZShzdGFydERhdGVJbnRl
cnZhbFNpbmNlMTk3MCk7CiB9CiAKIHZvaWQgV0tDb250ZXh0UmVnaXN0ZXJTY2hlbWVGb3JDdXN0
b21Qcm90b2NvbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgc2NoZW1lKQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjY2MDgzKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSht
YWNvcygxMC4xMCksIGlvcyg4LjAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXNXZWJQ
cm9jZXNzQ2FjaGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHBhZ2VDYWNoZUVuYWJsZWQgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0
dGVyPWlzSklURW5hYmxlZCkgQk9PTCBKSVRFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTQuNCksIGlvcygxMi4yKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNv
cHksIHNldHRlcj1zZXRIU1RTU3RvcmFnZURpcmVjdG9yeTopIE5TVVJMICpoc3RzU3RvcmFnZURp
cmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSwgc2V0dGVyPXNldEhTVFNTdG9yYWdlRGly
ZWN0b3J5OikgTlNVUkwgKmhzdHNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9ERVBSRUNBVEVEX1dJ
VEhfUkVQTEFDRU1FTlQoIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmhzdHNTdG9y
YWdlRGlyZWN0b3J5IiwgbWFjb3MoMTAuMTUsIFdLX01BQ19UQkEpLCBpb3MoMTMuMCwgV0tfSU9T
X1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjb25maWd1cmVKU0NGb3JUZXN0
aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lv
biAyNjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBA
QCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuCiBAcHJvcGVydHkgKG5v
bmF0b21pYykgTlNVSW50ZWdlciB0ZXN0U3BlZWRNdWx0aXBsaWVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21p
YykgQk9PTCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbG93c1NlcnZlclByZWNvbm5lY3QgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBudWxsYWJsZSwgY29weSwgc2V0dGVyPXNldEhTVFNTdG9yYWdlRGlyZWN0b3J5Oikg
TlNVUkwgKmhzdHNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJs
ZSwgY29weSkgTlNVUkwgKmFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI2NjA4
MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxOSBAQCAt
ICh2b2lkKXNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk6KE5TCiAgICAgX2NvbmZpZ3VyYXRp
b24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCistIChOU1VS
TCAqKWhzdHNTdG9yYWdlRGlyZWN0b3J5Cit7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6X2NvbmZpZ3VyYXRpb24tPmhzdHNTdG9yYWdlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6
WUVTXTsKK30KKworLSAodm9pZClzZXRIU1RTU3RvcmFnZURpcmVjdG9yeTooTlNVUkwgKil1cmwK
K3sKKyAgICBpZiAoIV9jb25maWd1cmF0aW9uLT5pc1BlcnNpc3RlbnQoKSkKKyAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkNhbm5v
dCBzZXQgaHN0c1N0b3JhZ2VEaXJlY3Rvcnkgb24gYSBub24tcGVyc2lzdGVudCBfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi4iXTsKKyAgICBjaGVja1VSTEFyZ3VtZW50KHVybCk7Cisg
ICAgX2NvbmZpZ3VyYXRpb24tPnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KHVybC5wYXRoKTsKK30K
KwogLSAoTlNVUkwgKilhbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeQogewogICAg
IHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0aW9uLT5hbHRlcm5hdGl2
ZVNlcnZpY2VzRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2
aXNpb24gMjY2MDgzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzU1LDE4ICs3NTUsNiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyTm90aWZpY2F0CiAgICAgbV9wb3dlclNvdXJjZU5vdGlm
aWVyID0gbnVsbHB0cjsKIH0KIAotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpCi17Ci0gICAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYg
c2Vzc2lvbjsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7Ci0gICAgZGlzcGF0Y2hf
b25jZSgmb25jZSwgXnsKLSAgICAgICAgTlNTdHJpbmcgKmlkZW50aWZpZXIgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVALlByaXZhdGVCcm93c2luZyIsIFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gYnVuZGxlSWRlbnRpZmllcl1dOwotICAgICAgICBzZXNzaW9uID0gY3JlYXRlUHJpdmF0
ZVN0b3JhZ2VTZXNzaW9uKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpZGVudGlmaWVyKTsKLSAgICB9
KTsKLQotICAgIHJldHVybiBzZXNzaW9uOwotfQotCiBib29sIFdlYlByb2Nlc3NQb29sOjppc1VS
TEtub3duSFNUU0hvc3QoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0CiB7CiAgICAgUmV0
YWluUHRyPENGVVJMUmVmPiB1cmwgPSBVUkwoVVJMKCksIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwo
KTsKQEAgLTc3NCwxOSArNzYyLDYgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6aXNVUkxLbm93bkhT
VFNIb3N0KAogICAgIHJldHVybiBfQ0ZOZXR3b3JrSXNLbm93bkhTVFNIb3N0V2l0aFNlc3Npb24o
dXJsLmdldCgpLCBudWxscHRyKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRIU1RT
SG9zdHMoKQotewotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1dpdGhTZXNzaW9uKG51bGxw
dHIpOwotICAgIF9DRk5ldHdvcmtSZXNldEhTVFNIb3N0c1dpdGhTZXNzaW9uKHByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc2V0SFNUU0hvc3Rz
QWRkZWRBZnRlckRhdGUoZG91YmxlIHN0YXJ0RGF0ZUludGVydmFsU2luY2UxOTcwKQotewotICAg
IE5TRGF0ZSAqc3RhcnREYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3
MDpzdGFydERhdGVJbnRlcnZhbFNpbmNlMTk3MF07Ci0gICAgX0NGTmV0d29ya1Jlc2V0SFNUU0hv
c3RzU2luY2VEYXRlKG51bGxwdHIsIChfX2JyaWRnZSBDRkRhdGVSZWYpc3RhcnREYXRlKTsKLSAg
ICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURhdGUocHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpLCAoX19icmlkZ2UgQ0ZEYXRlUmVmKXN0YXJ0RGF0ZSk7Ci19Ci0KICNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKIE9wdGlvbmFs
PHVuc2lnbmVkPiBXZWJQcm9jZXNzUG9vbDo6bm9taW5hbEZyYW1lc1BlclNlY29uZEZvckRpc3Bs
YXkoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAJKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiAr
MjMyLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZQogICAgICAg
ICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+amF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSkpOwogICAgIGlmICghbV9jb25maWd1cmF0
aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkgJiYgbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24tPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShyZXNvbHZlUGF0
aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgp
LmlzRW1wdHkoKSAmJiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+aHN0c1N0b3JhZ2VEaXJlY3Rv
cnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRIU1RT
U3RvcmFnZURpcmVjdG9yeShyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1
cmF0aW9uLT5oc3RzU3RvcmFnZURpcmVjdG9yeSgpKSk7CiAKICAgICAvLyBSZXNvbHZlIGRpcmVj
dG9yaWVzIGZvciBmaWxlIHBhdGhzLgogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5jb29raWVT
dG9yYWdlRmlsZSgpLmlzRW1wdHkoKSkgewpAQCAtMjI4Myw2ICsyMjg1LDExIEBAIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICBpZiAoIW5ldHdvcmtDYWNoZURp
cmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShuZXR3b3JrQ2FjaGVEaXJlY3RvcnksIG5ldHdvcmtDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKKyAgICBhdXRvIGhzdHNTdG9yYWdlRGlyZWN0
b3J5ID0gcmVzb2x2ZWRIU1RTU3RvcmFnZURpcmVjdG9yeSgpOworICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAo
IWhzdHNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGhzdHNTdG9yYWdlRGlyZWN0b3J5
LCBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBib29sIHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBmYWxzZTsKICAgICBi
b29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKICAgICBh
dXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CkBAIC0yMzI1LDYgKzIzMzIs
OCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3Ry
aWN0aW9uc0ZvclRlc3RpbmcgPSBtX2NvbmZpZ3VyYXRpb24tPmFsbExvYWRzQmxvY2tlZEJ5RGV2
aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKTsKICAgICBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gV1RGTW92ZShuZXR3b3JrQ2FjaGVE
aXJlY3RvcnkpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CisgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGly
ZWN0b3J5ID0gV1RGTW92ZShoc3RzU3RvcmFnZURpcmVjdG9yeSk7CisgICAgbmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZShoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgbmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUgPSBtX2NvbmZpZ3VyYXRpb24t
PmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMuZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQgPSBtX2NvbmZpZ3VyYXRpb24tPmZh
c3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkKCk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLm5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSBtX2NvbmZp
Z3VyYXRpb24tPm5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI2NjA4MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI1
LDYgKzIyNSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24t
PmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29s
dmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVk
SFNUU1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+aHN0c1N0b3JhZ2VEaXJlY3RvcnkoKTsgfQogCiAgICAgRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2UmIGRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCkgeyByZXR1cm4gbV9kZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZS5nZXQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCShyZXZpc2lvbiAyNjYwODMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDkgKzY3LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
PiBXZWJzaQogICAgIGNvcHktPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5t
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSA9IHRoaXMtPm1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeTsKICAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLSNpZiBVU0UoR0xJQikKICAgICBjb3B5LT5tX2hzdHNT
dG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9oc3RzU3RvcmFnZURpcmVjdG9yeTsKLSNlbmRpZgog
ICAgIGNvcHktPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9sb2NhbFN0b3JhZ2VE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fYWx0ZXJuYXRpdmVTZXJ2
aWNlc0RpcmVjdG9yeSA9IHRoaXMtPm1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjY2MDgz
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTAgKzY3LDEwIEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IFN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQotI2lmIFVTRShHTElCKSAvLyBBY2NvcmRp
bmcgdG8gcjI0NTA3NSB0aGlzIHdpbGwgZXZlbnR1YWxseSBtb3ZlIGhlcmUuCisKICAgICBjb25z
dCBTdHJpbmcmIGhzdHNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9oc3RzU3Rv
cmFnZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5n
JiYgZGlyZWN0b3J5KSB7IG1faHN0c1N0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9y
eSk7IH0KLSNlbmRpZgorCiAgICAgY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQogCkBAIC0xNzUsOCArMTc1LDggQEAg
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBT
dHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OwogICAgIFN0cmluZyBt
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotI2lmIFVTRShHTElCKQogICAgIFN0cmluZyBtX2hz
dHNTdG9yYWdlRGlyZWN0b3J5OworI2lmIFVTRShHTElCKQogICAgIGJvb2wgbV9uZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgdHJ1ZSB9OwogI2Vsc2UKICAgICBib29s
IG1fbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>